很抱歉,我已尝试搜索,但没有收到与我的问题相关的任何信息。
我的看法:
<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>
我的控制器:
[HttpPost]
public ActionResult AdminDeleteResult(FormCollection form)
{
string userid = form["userid"].ToString(); //ERROR HERE
...
}
我尝试用
@Html.TextBox("userid")
替换 Label,效果很好。
但我想使用标签,因为我不希望人们改变它的值。
谢谢您的帮助!
这不是
Label
的目的,你必须使用input
。 form
的目的是收集数据,数据保存在表单元素中。
如果您不希望人们更改该值(这可以讨论),您可以制作
input
readonly
或者您可以隐藏它。
因为您的视图使用模型,您可以使用带有 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>
}
正如 @man-nemati 提到的,最好在你的行动中使用模型
[HttpPost]
public ActionResult AdminDeleteResult(UserModel user)
{
string userid =user.userid; // userid is storred in user
// ...
}
@DisplayNameFor(m => m.PropertyName) 从视图模型中的显示名称属性获取文本。