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

本文关键字:Label @Html 何获得 的值 文本 NET ASP MVC Razor | 更新日期: 2023-09-27 17:50:30

对不起,我已经试着搜索了,但是我没有收到任何与我的问题相关的信息。

我的观点:

<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>

和Controller:

[HttpPost]
public ActionResult AdminDeleteResult(FormCollection form)
{
     string userid = form["userid"].ToString(); //ERROR HERE
     ...
}

我试着用@Html.TextBox("userid")代替标签,它工作得很好。但是我想使用Label,因为我不想让人们改变它的值。谢谢你的帮助!

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

这不是Label的目的,您必须使用inputform的目的是收集数据,数据保存在形式元素中。

如果你不想让人们改变这个值(这个可以讨论),你可以让input readonly或者你可以隐藏它。

因为你的视图使用模型你可以使用HtmlHelpers与lambda表达式来创建你的表单。

@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
   // ...
}