Asp.net mvc 无法将带[]的索引应用于类型为';HttpRequest&x27;
我试图从视图的文本框中获取值 我的看法是:Asp.net mvc 无法将带[]的索引应用于类型为';HttpRequest&x27;,asp.net-mvc,razor,httprequest,Asp.net Mvc,Razor,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.Us
@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>
我得到了标题中所说的错误。
提前谢谢你 您可以使用强类型viewmodel绑定:
@model MyDataIndexViewModel
@* other stuff *@
@Html.TextBoxFor(model => model.Email)
查看
@model MyDataIndexViewModel
@* other stuff *@
@Html.TextBox("txtEmail", Model.Email)
控制器
[HttpPost]
public ActionResult Save(MyDataIndexViewModel model)
{
var email = model.Email;
return View();
}
或者直接使用文本框进行模型绑定:
@model MyDataIndexViewModel
@* other stuff *@
@Html.TextBoxFor(model => model.Email)
或者,如果仍要使用HttpRequest
成员,则可以使用集合(aNameValueCollection
)从txtEmail
输入检索文本:
[HttpPost]
public ActionResult Save()
{
var email = Request.Form["txtEmail"].ToString();
return View();
}
请注意,Request[“txtEmail”]
不鼓励使用,因为它没有应用编译时安全性,因为键值可以从Request.QueryString
、Request.Form
或其他HttpRequestBase
成员中检索
类似问题:
查看:
@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>
}
您可以使用索引——如果您测试OP的代码,您将看到var email=Request[“txtEmail”].ToString()正如Darin指出的那样,code>工作得很好,我很惊讶可以使用Request[“Key”]
,但由于运行时可能会失败,所以不推荐使用它。Controller.Request
是HttpRequestBase
,并且有一个默认属性(当然绑定到模型要好得多)。OP没有向我们展示抛出错误的代码(他们的视图甚至没有表单或提交按钮,只有一个永远不会指向[HttpPost]
方法的链接)
[HttpPost]
public ActionResult Save()
{
var email = Request.Form["txtEmail"].ToString();
return View();
}