不能将带有 [] 的索引应用于类型 'HttpRequest' 的表达式



我正在尝试从视图的文本框中获取值。

这是我的观点:

    @model MyDataIndexViewModel
@{
    <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12">
            <h1>Meine Daten</h1>
        </div>
    </div>
    var item = Model.User;
        <div class="row">
            <div class="col-xs-6 col-sm-6 col-md-6 myDataTitle">Email</div>
            <div class="col-xs-6 col-sm-6 col-md-6">
                @Html.TextBox("txtEmail", "", new { placeholder = item.Email})
            </div>
        </div>
}
<div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12">
        <a class="btn btn-default pull-right" href="/ChangeMyData/Save">Speichern</a>
    </div>
</div>

这是我的控制器:

   [HttpPost]
    public ActionResult Save()
    {
        var email = Request["txtEmail"].ToString();
        return View();
    }

正如标题中所说的那样,我收到错误。提前谢谢你!

查看:

@model MyDataIndexViewModel

@using (Html.BeginForm("Save", "CONTROLLER_NAME"))
{
<div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12">
        <h1>Meine Daten</h1>
    </div>
</div>
var item = Model.User;
    <div class="row">
        <div class="col-xs-6 col-sm-6 col-md-6 myDataTitle">Email</div>
        <div class="col-xs-6 col-sm-6 col-md-6">
            @Html.TextBox("txtEmail", "", new { placeholder = item.Email, id="txtEmail"})
        </div>
    </div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
    <a class="submit btn btn-default pull-right">Speichern</a>
</div>
</div>
}

控制器

[HttpPost]    
public ActionResult Save()
{
    var email = Request.Form["txtEmail"].ToString();
    return View();
}

可以使用强类型的视图模型绑定:

视图

@model MyDataIndexViewModel
@* other stuff *@
@Html.TextBox("txtEmail", Model.Email)

控制器

[HttpPost]
public ActionResult Save(MyDataIndexViewModel model)
{
    var email = model.Email;
    return View();
}

或者直接使用 TextBoxFor 进行模型绑定:

@model MyDataIndexViewModel
@* other stuff *@
@Html.TextBoxFor(model => model.Email)

或者,如果您仍想使用 HttpRequest 成员,可以使用Request.Form集合(NameValueCollection )从txtEmail输入中检索文本:

[HttpPost]
public ActionResult Save()
{
    var email = Request.Form["txtEmail"].ToString();
    return View();
}

请注意,不鼓励使用Request["txtEmail"],因为没有应用编译时安全性,因为键值可以从Request.QueryStringRequest.Form或其他HttpRequestBase成员中检索。

类似问题:

指定名称的 MVC 文本框未在发布时绑定模型

使用 MVC 中的请求将表单数据访问到控制器 ASP.NET

最新更新