从URL到控制器的MVC数据模型

时间:2015-12-30 16:01:27

标签: asp.net-mvc

我需要将一些数据从URL传递给MVC中的控制器。数据在此代码中的@Value = @Request.QueryString [" rt"]中:

@using (Html.BeginForm("ResetPasswordToken", "Account")){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "Reset Password non riuscito")
<div class="container above-footer login-form">
    <div class="col-md-6" align="center" style=" margin-left:25%; margin-top:100px; margin-bottom:100px;">
        <div class="editor-label">
            @Html.LabelFor(m => m.ResetToken)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(m => m.ResetToken, new { @Value = @Request.QueryString["rt"] })
            @Html.ValidationMessageFor(m => m.ResetToken)
        </div>

当我继续与此视图关联的提交按钮时,我需要在AccountController中检索此值。如果没有在页面中看到它,最好的模式是什么?

我知道这是一个非常简单的问题,但我明天只需做这个修改,而且我很忙。感谢大家,对不起这个问题

1 个答案:

答案 0 :(得分:2)

在呈现此视图的控制器操作中(GET操作):

model.ResetToken = Request["rt"];
return View(model);

然后在视图中简单地说:

@Html.TextBoxFor(m => m.ResetToken)

或者如果您不希望在表单中显示它,您也可以使用隐藏字段:

@Html.HiddenFor(m => m.ResetToken)

现在,当表单提交回ResetPasswordToken操作时,您可以从模型中读取此值:

[HttpPost]
public ActionResult ResetPasswordToken(MyViewModel model)
{
    // you can use the model.ResetToken property here to read the value
}

或者,您可以在生成HTML表单的action属性时将此值包含在网址的一部分中:

@using (Html.BeginForm("ResetPasswordToken", "Account", new { ResetToken = Request["rt"] }))
{
    ...
}