如何将重复的代码段从控制器移到助手方法类中,而不必在中重复代码。净核心?请让我知道,如果我需要提供更多的细节。
我需要将任何重复的代码部分移出这个控制器,这样我就可以在需要它的其他控制器中调用这个方法
用户控制器:
using myApp.Data;
using myApp.Models;
using myApp.Models.ViewModels;
using myApp.Utilities;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.UI.Services;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
namespace myApp.Controllers
{
[Authorize]
public class UserController : Controller
{
private readonly ApplicationDbContext db;
private readonly UserManager<ApplicationUser> userManager;
public UserController( ApplicationDbContext db,
UserManager<ApplicationUser> userManager)
{
this.db = db;
this.userManager = userManager;
}
[HttpGet]
public async Task<IActionResult> UpdateUserDetails(UpdateUserViewModel model)
{
if (ModelState.IsValid)
{
var user = await userManager.FindByIdAsync(model.Id);
if (user == null)
{
//Calling Repeated Code in this controller
return UserNotFound();
}
else
{
user.FirstName = model.FirstName;
user.LastName = model.LastName;
user.UserName = model.UserName;
user.PhoneNumber = model.PhoneNumber;
}
var result = await userManager.UpdateAsync(user);
if (result.Succeeded)
{
//Calling Repeated Code in this controller
return UpdateSuccess();
}
AddErrors(result);
}
return View(model);
}
//REPEATED CODE SECTION BEGINS (Extracted out of UpdateUserDetails Controller)
public IActionResult UserNotFound()
{
TempData[HelperStatic.ErrorMessage] = HelperStatic.userNotFoundMsg;
return View(HelperStatic.notFoundView);
}
public IActionResult UpdateSuccess()
{
TempData[HelperStatic.SuccessMessage] = HelperStatic.recordUpdatedMsg;
return RedirectToAction(nameof(Index));
}
//REPEATED CODE SECTION ENDS
}
}
项目中已存在仅具有静态常量的静态帮助器类。
在上述控制器中使用的静态帮助器类:
namespace myApp.Utilities
{
public static class HelperStatic
{
// Messages
public const string SuccessMessage = "Success";
public const string ErrorMessage = "Error";
public const string userNotFoundMsg = "User not found";
public const string recordUpdatedMsg = "Record updated";
// Views
public const string notFoundView = "NotFound";
}
}
我需要一个不同的HelperMethod
类和可重用的动作方法。我如何做到这一点?
创建一个控制器基类,并将所有实用程序方法移入其中,而不是帮助类。
public class BaseController : Controller
{
public IActionResult UserNotFound()
{
TempData[HelperStatic.ErrorMessage] = HelperStatic.userNotFoundMsg;
return View(HelperStatic.notFoundView);
}
public IActionResult UpdateSuccess()
{
TempData[HelperStatic.SuccessMessage] = HelperStatic.recordUpdatedMsg;
return RedirectToAction(nameof(Index));
}
}
你可以这样使用它。
public class HomeController : BaseController
{
public IActionResult Index()
{
UserNotFound();
return View();
}
}
问题内容: 有没有可靠的方法来检测用户是否在jQuery中使用移动设备?类似于CSS @media属性吗?如果浏览器在手持设备上,我想运行其他脚本。 jQuery 函数不是我想要的。 问题答案: 编者注: 对于现代Web应用程序,不建议使用用户代理检测技术。请参阅此答案下方的评论以确认这一事实。建议使用特征检测和/或媒体查询来使用其他答案之一。 除了使用jQuery,您还可以使用简单的JavaSc
问题内容: 我需要将数据库从sqlite迁移到mysql,并且各种工具/脚本对我来说太多了,无法轻松找到最安全,最优雅的解决方案。 在我看来,这看起来不错http://djangosnippets.org/snippets/14/,但距获取更新令人担忧,似乎已经过去了三年。 您是否可以推荐一个在Django 1.1.1上可靠的解决方案? 问题答案: 执行: 接下来,将你的settings.py更改
问题内容: 是什么使应用程序功能的模块/服务/位成为OSGi模块的特别好的候选者? 我对在我的应用程序中使用OSGi感兴趣。我们是一家Java商店,我们广泛使用Spring,因此我倾向于将Spring动态模块用于OSGi(tm)服务平台。我正在寻找一种将OSGi一点点集成到应用程序中作为试用的好方法。这里有人使用过此技术或类似的OSGi技术吗?有陷阱吗? @Nicolas-谢谢,我已经看过那个了。
问题内容: 复制列表的最佳方法是什么?我知道以下方法,哪种更好?还是有另一种方法? 问题答案: 如果要浅拷贝(不复制元素),请使用: 如果要进行深层复制,请使用复制模块:
问题内容: 在Clojure中制作 GUI的最佳方法是什么? 有一些功能性Swing或SWT包装器的示例吗?还是与JavaFX声明性GUI描述进行了某些集成,可以使用某些宏轻松地将它们包装到s表达式中? 有教程吗? 问题答案: 我会谦虚地建议跷跷板。 这是一个基于REPL的教程,假定您没有Java或Swing知识。 跷跷板很像@tomjen的建议。这是“你好,世界”: 这是@Abhijith和@d
问题内容: 我将使用C / C ++,并想知道与MySQL服务器对话的最佳方法。我应该使用服务器安装随附的库吗?除了官方图书馆外,我还应该考虑其他优秀的图书馆吗? 问题答案: MySQL ++
问题内容: 我正在使用许多静态HTML网站管理旧版网站,没有服务器端脚本,只有纯HTML / CSS,最少的javascript。我发现,在不同页面中多次更改同一段代码非常浪费时间。例如,当菜单中的某些内容发生更改时,由于菜单只是每个文档中的静态文本,因此我必须多次进行相同的更改。 我想知道什么是最好的策略,以最大程度地减少这种开销,换句话说,对于跨多个静态HTML页面管理导航代码之类的建议,您会
问题内容: 我的网站最近遭到了一个无辜的代码的攻击: 那里没有SQL调用,因此我不担心SQL注入。但是,显然,SQL并不是唯一的注入方式。 该网站提供了解释以及避免代码注入的一些示例:http : //www.theserverpages.com/articles/webmasters/php/security/Code_Injection_Vulnerabilities_Explained.ht