我正在学习ASP MVC,并开发SportsStore(创建/编辑功能)。当创建产品时,Create action将查看Edit视图,但是当按下Sudmit时,它会调用action(Post),通过我将其设置为调用Edit action:
<% using (Html.BeginForm("Edit", "Admin", FormMethod.Post, new { enctype="multipart/form-data" }))
{%>
<%--<%= Html.ValidationSummary() %>--%>
<%--<%= Html.Hidden("ProductID") %>--%>
<p>Name: <%= Html.TextBox("Name")%>
<div><%= Html.ValidationMessage("Name")%></div>
</p>
<p>Description: <%= Html.TextArea("Description", null, 4, 20, null)%>
<div><%= Html.ValidationMessage("Description")%></div>
</p>
<p>Price: <%= Html.TextBox("Price")%>
<div><%= Html.ValidationMessage("Price")%></div>
</p>
<p>Category: <%= Html.TextBox("Category")%>
<div><%= Html.ValidationMessage("Category")%></div>
</p>
<p>
Image:
<% if (Model.ImageData == null)
{ %>
None
<% }
else
{ %>
<img src= "<%= Url.Action("GetImage", "Products", new {Model.ProductID}) %>" />
<% } %>
<div>Upload new image: <input type="file" name="file" id="file" /></div>
</p>
<input type="submit" value="Save" />
<%= Html.ActionLink("Cancel and return to list", "Index")%>
<% } %>
请帮我修理
答案 0 :(得分:0)
您拥有的代码似乎是合理的如果您希望它回发到“编辑”操作。您的问题有点令人困惑,但我将假设您要重新使用该视图,并在呈现时从创建回发,并在呈现时回显编辑来自编辑。最简单的方法是简单地省略BeginForm调用中的参数。这将导致表单操作设置为当前控制器和操作,这将为您提供您想要的内容。另一种方法是为模型开发模板(显示/编辑器),但为Create / Edit创建单独的视图,只显示模板Html.EditorFor( m => m, "ProductTemplate" )
。这将允许您自定义视图 - 也许创建视图需要您上传图像? - 但仍然重用大部分代码。