如何向 MVC 5 帐户登录操作添加参数?

Posted

技术标签:

【中文标题】如何向 MVC 5 帐户登录操作添加参数?【英文标题】:How do I add a parameter to the MVC 5 Account Login action? 【发布时间】:2018-06-27 00:50:42 【问题描述】:

MVC 中 Account 控制器中的登录动作有两个参数:

    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    
        LoginStatus status = new LoginStatus();

        if (!ModelState.IsValid)
        
            return View(model);
         
        ....

我想加一个。喜欢...

    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl, string anotherOne)
    
        LoginStatus status = new LoginStatus();

        if (!ModelState.IsValid)
        
            return View(model);
         
        ....

action 的 post 是一个 html.BeginForm,比如...

    @using (Html.BeginForm("Login", "Account", new  ReturnUrl = ViewBag.ReturnUrl , FormMethod.Post, new  @class = "form-horizontal", role = "form" ))  

当我尝试向该帖子添加另一个参数时,例如...

    @using (Html.BeginForm("Login", "Account", new  ReturnUrl = ViewBag.ReturnUrl , new  anotherOne = "testdata" , FormMethod.Post, new  @class = "form-horizontal", role = "form" ))

...我猜这会破坏路由?我收到“处理您的请求时发生错误”。我猜我没有处理那个附加参数的路线?我是朝着正确的方向前进,还是有其他方法可以将附加参数传递给 Login 操作?

【问题讨论】:

【参考方案1】:

您需要将BeginForm() 方法的第三个参数中的所有路由/查询字符串值添加为object

@using (Html.BeginForm(
    "Login",
    "Account", 
    new  ReturnUrl = ViewBag.ReturnUrl, anotherOne = "testdata" , 
    FormMethod.Post, 
    new  @class = "form-horizontal", role = "form" )
)

【讨论】:

以上是关于如何向 MVC 5 帐户登录操作添加参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何向启用 OpenID 的站点添加注销功能?

如何在 ASP.NET Core MVC 中使用 ADO.NET 向存储过程添加参数?

如何在 ASP.NET Core 5 MVC (.NET 5) 中获取记录的用户数据?

管理帐户mvc app c#[关闭]

登录并使用亚马逊付款 - aspnet mvc

如何登陆微软账号