Noo*_*ars 1 c# asp.net asp.net-mvc razor asp.net-mvc-4
对不起,我试过搜索,但我没有收到任何与我的问题相关的信息.
我的看法:
<legend>COMFIRM</legend>
@using (Ajax.BeginForm("AdminDeleteResult", "Admin",
new AjaxOptions { UpdateTargetId = "div" }))
{
<div id="div"></div>
<h6>ARE YOU SURE WANT TO DELETE</h6>
<ol>
<li>
@Html.Label("User ID:")
@Html.Label("userid", Model.userid)
</li>
<li>
@Html.Label("Username:")
@Html.Label(Model.username)
</li>
</ol>
<button>DELETE</button>
}
</fieldset>
Run Code Online (Sandbox Code Playgroud)
我的控制器:
[HttpPost]
public ActionResult AdminDeleteResult(FormCollection form)
{
string userid = form["userid"].ToString(); //ERROR HERE
...
}
Run Code Online (Sandbox Code Playgroud)
我试图替换Label by @Html.TextBox("userid"),它工作正常.但我想使用Label因为我不希望人们改变它的价值.谢谢您的帮助!
这不是Label你必须使用的目的input.其目的form是收集数据,数据保存在表单元素中.
如果您不希望人们更改值(这可以讨论),您可以制作input readonly或者您可以隐藏它.
因为您的View使用了Model,所以您可以使用带有lambda表达式的HtmlHelpers来创建表单.
@using (Ajax.BeginForm("AdminDeleteResult", "Admin",
new AjaxOptions { UpdateTargetId = "div" }))
{
<div id="div"></div>
<h6>ARE YOU SURE WANT TO DELETE</h6>
<ol>
<li>
@Html.Label(model => model.userid)
@Html.TextBoxFor(model => model.userid, new { @readonly="readonly" })
@* @Html.HiddenFor(model => model.userid) *@
</li>
<li>
@Html.Label(model => model.username)
@Html.TextBoxFor(model => model.username, new { @readonly="readonly" })
</li>
</ol>
<button>DELETE</button>
}
Run Code Online (Sandbox Code Playgroud)
正如@ man-nemati所提到的,最好在你的行动中使用这个模型
[HttpPost]
public ActionResult AdminDeleteResult(UserModel user)
{
string userid =user.userid; // userid is storred in user
// ...
}
Run Code Online (Sandbox Code Playgroud)