我正在使用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操作时,文本框中的文本呈现正常。这两个操作都将填充的模型传递给编辑视图,因此我不明白为什么会发生这种情况。
答案 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中的值,即使您在指定的模型中有它们。