加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-2 – asp.net-mvc2 – 不使用Model的强类型助手?

发布时间:2020-12-15 22:33:02 所属栏目:asp.Net 来源:网络整理
导读:在MVC2中使用强类型帮助程序时,在发布帖子时不会从Model属性中获取输入字段值.这是默认行为吗? 强类型助手的(强类型)视图: div class="editor-label" %: Html.LabelFor(model = model.Name) %/divdiv class="editor-field" %: Html.TextBoxFor(model = mod
在MVC2中使用强类型帮助程序时,在发布帖子时不会从Model属性中获取输入字段值.这是默认行为吗?

强类型助手的(强类型)视图:

<div class="editor-label">
    <%: Html.LabelFor(model => model.Name) %>
</div>
<div class="editor-field">
    <%: Html.TextBoxFor(model => model.Name) %>
    <%: Html.ValidationMessageFor(model => model.Name) %>
</div>

<div class="editor-label">
    <%: Html.LabelFor(model => model.Price) %>
</div>
<div class="editor-field">
    <%: Html.TextBoxFor(model => model.Price) %>
    <%: Html.ValidationMessageFor(model => model.Price) %>
</div>

控制器操作:/ Product / Edit / 5

public ActionResult Edit(int id)
    {
        var p = new Product();
        p.Name = "product 1";
        p.Price = "100";
        return View(p);
    }

Html输出:

<div class="editor-label">
    <label for="Name">Name</label>
</div>

<div class="editor-field">
    <input id="Name" name="Name" type="text" value="product 1" />
</div>

<div class="editor-label">
    <label for="Price">Price</label>
</div>
<div class="editor-field">
    <input id="Price" name="Price" type="text" value="100" />
</div>

控制器操作:/ Product / Edit / 5

[HttpPost]
    public ActionResult Edit(Product p)
    {
        p.Name = "prrrrrrd 2";
        return View(p);

    }

表单发布后的Html输出(下面我希望输入id =“Name”的值为“prrrrrrd 2.强类型帮助器从哪里得到它的值?):

<div class="editor-label">
    <label for="Name">Name</label>
</div>

<div class="editor-field">
    <input id="Name" name="Name" type="text" value="product 1" />
</div>

<div class="editor-label">
    <label for="Price">Price</label>
</div>
<div class="editor-field">
    <input id="Price" name="Price" type="text" value="100" />
</div>

解决方法

When using strongly typed helpers in MVC2 the input field values
aren’t taken from the Model property when a post is made. Is this
default behavior?

是的,它们首先从ModelState中获取,然后从模型中获取.如果您打算在POST操作中对模型执行某些修改,则需要先从ModelState中删除它们.例如:

[HttpPost]
public ActionResult Edit(Product p)
{
    ModelState.Remove("Name");
    p.Name = "prrrrrrd 2";
    return View(p);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读