MVC不在文本框中呈现模型属性

时间:2009-12-12 22:59:33

标签: c# .net asp.net-mvc

我正在使用MVC创建一些简单的CRUD页面。我有一个字符串类型的用户控件,我将其包含在我的创建和编辑视图中,如下所示:

<% using (Html.BeginForm()) {%>
<div class="form">
    <%:this.Model.Title%>
    <p>
        <label for="Title">Title:</label>
        <%= Html.TextBox("Title", this.Model.Title) %>
        <%= Html.ValidationMessage("Title", "*") %>
    </p>
    <p>
        <label for="Summary">Summary:</label>
        <%= Html.TextBox("Summary", this.Model.Summary)%>
        <%= Html.ValidationMessage("Summary", "*") %>
    </p>
    <p>
        <input type="submit" value="Create" />
    </p>
</div>
<% } %>

..一个创建动作,如下所示:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(string title, string summary)
{
    Tour tour = this.TourManager.CreateTour(string.IsNullOrEmpty(title) ? DefaultText.TourTitle : title, string.IsNullOrEmpty(summary)? DefaultText.TourSummary : summary);
    return this.View("Edit", tour);
}

...以及一个如下所示的编辑操作:

public ActionResult Edit(int id)
{
    Tour tour = this.TourManager.GetTour(id);
    return this.View("Edit", tour);
}

我遇到的问题是<%= Html.TextBox("Title", this.Model.Title) %>没有在文本框中呈现文本。 <%:this.Model.Title%>将它渲染得很好,所以我知道模型是填充的。仅当从“创建”操作返回视图(URL为/ MyEntity / Create)时才会发生这种情况。使用类似/ MyEntity / Edit / 1的URL调用Edit操作时,文本框中的文本呈现正常。这两个操作都将填充的模型传递给编辑视图,因此我不明白为什么会发生这种情况。

1 个答案:

答案 0 :(得分:3)

我想建议你使用Post / Redirect / Get模式。后期行动应该是:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(string title, string summary)
{
    Tour tour = this.TourManager.CreateTour(string.IsNullOrEmpty(title) ? DefaultText.TourTitle : title, string.IsNullOrEmpty(summary)? DefaultText.TourSummary : summary);
    return RedirectToAction("Edit", new { id = tour.id } );
}

您的问题可以连接到填充的ModelState,它不是空的,因为您没有使用重定向。 MVC助手使用填充的ModelState中的值,即使您在指定的模型中有它们。