在ASP.NET MVC 4 Razor中,如何获得@ Html.Label的值(文本)?

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因为我不希望人们改变它的价值.谢谢您的帮助!

adr*_*dar 7

这不是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)