我正在创建一个新的MVC v3 Razor Web应用程序,似乎在从部分视图中读取值时遇到问题。
我有一个ViewModel(标题),它由另外三个ViewModel
组成 public ProfileVM Profile { get; set; }
public SpecsVM Specs { get; set; }
public GeneralVM General { get; set; }
public Guid Id { get; set; }
我有一个强烈输入Title视图模型的页面,我使用@Html.RenderPartial语法将每个其他ViewModel(配置文件等)渲染到不同的局部视图 这似乎工作正常,但我希望页面上只有一个按钮来处理数据的发布,并希望将用户输入的值捕获到部分视图中。 这可能吗? 提前致谢
根据表单部分的请求生成HTML。我没有添加母版页信息
<form action="/Titles/Title/Edit/2bb75b02-9dd7-e011-971f-0003fffb8797" method="post">
<fieldset>
<h1>
Title Details</h1>
<form action="/Titles/Title/Edit/2bb75b02-9dd7-e011-971f-0003fffb8797" method="post">
<fieldset>
<p>
<input type="submit" value="Save" name="TitleGeneral"/>
</p>
<hr />
<table>
<tr>
<td class="editor-label" style="width: 150px;"><label for="TitleCode">Code</label>
</td>
<td class="editor-label">
<input class="text-box single-line" id="TitleCode" name="TitleCode" type="text" value="T00006" /> <span class="field-validation-valid" data-valmsg-for="TitleCode" data-valmsg-replace="true"></span>
</td>
<td rowspan="7"> <img src="../../../../Content/demoBF.jpg" width="150px" height="150px" /></td>
</tr>
<tr>
<td class="editor-label">
<label for="TitleName">Title</label>
</td>
<td class="editor-label">
<input class="text-box single-line" id="TitleName" name="TitleName" type="text" value="Beaches Of France" />
<span class="field-validation-valid" data-valmsg-for="TitleName" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label">
<label for="SubTitle">Sub Title</label>
</td>
<td class="editor-label"><input class="text-box single-line" id="SubTitle" name="SubTitle" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="SubTitle" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label">
<label for="SortingTitle">Sorting Title (If Different)</label>
</td>
<td class="editor-label">
<input class="text-box single-line" id="SortingTitle" name="SortingTitle" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="SortingTitle" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label"><label for="ShortTitle">Short or abbreviated title</label>
</td>
<td class="editor-label"><input class="text-box single-line" id="ShortTitle" name="ShortTitle" type="text" value="TRO1" />
<span class="field-validation-valid" data-valmsg-for="ShortTitle" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label"><label for="Comments">Comments</label>
</td>
<td class="editor-label">
<input class="text-box single-line" id="Comments" name="Comments" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Comments" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label">
<label for="Author">Author</label>
</td>
<td class="editor-label">
<input class="text-box single-line" id="Author" name="Author" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Author" data-valmsg-replace="true"></span>
</td>
</tr>
</table>
</fieldset>
</form> <br />
<br />
<ul class="tabs">
<li><a href="#tab1">Profile</a></li>
<li><a href="#tab2">Specification</a></li>
<li><a href="#tab3">Authors</a></li>
<li><a href="#tab4">Editions</a></li>
<li><a href="#tab5">Restrictions</a></li>
<li><a href="#tab6">Licences</a></li>
<li><a href="#tab7">Purchases</a></li>
<li><a href="#tab8">Restrictions</a></li>
</ul>
<div class="tab_container">
<div id="tab1" class="tab_content">
<!--Content-->
<form action="/Titles/Title/Edit/2bb75b02-9dd7-e011-971f-0003fffb8797" method="post">
<fieldset>
<p>
<input type="submit" value="Save" name="TitleProfile"/>
</p>
</fieldset>
</form> </div>
<div id="tab2" class="tab_content">
<!--Content-->
<form action="/Titles/Title/Edit/2bb75b02-9dd7-e011-971f-0003fffb8797" method="post">
<fieldset>
<table>
<tr>
<td class="editor-label" style="width: 150px;"><label for="Pages">Pages</label>
</td>
<td class="editor-label"><input class="text-box single-line" data-val="true" data-val-number="The field Pages must be a number." id="Pages" name="Pages" type="text" value="96" />
<span class="field-validation-valid" data-valmsg-for="Pages" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label"><label for="Plates">Plates or illustrations</label>
</td>
<td class="editor-label"><input class="text-box single-line" data-val="true" data-val-number="The field Plates or illustrations must be a number." id="Plates" name="Plates" type="text" value="64" />
<span class="field-validation-valid" data-valmsg-for="Plates" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label">
<label for="PlateType">Plate Type</label>
</td>
<td class="editor-label"><input class="text-box single-line" id="PlateType" name="PlateType" type="text" value="Full-colour photographs" />
<span class="field-validation-valid" data-valmsg-for="PlateType" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label">
<label for="Format">Format</label>
</td>
<td class="editor-label"><input class="text-box single-line" id="Format" name="Format" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Format" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label">
<label for="OtherSpecs">Other specifications</label>
</td>
<td class="editor-label">
<input class="text-box single-line" id="OtherSpecs" name="OtherSpecs" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="OtherSpecs" data-valmsg-replace="true"></span>
</td>
</tr>
</table>
</fieldset>
</form> </div>
<div id="tab3" class="tab_content">
<!--Content-->
<form action="/Titles/Title/Edit/2bb75b02-9dd7-e011-971f-0003fffb8797" method="post">
<fieldset>
<table>
<tr>
<td class="editor-label" style="width: 150px;"><label for="Pages">Pages</label>
</td>
<td class="editor-label"><input class="text-box single-line" data-val="true" data-val-number="The field Pages must be a number." id="Pages" name="Pages" type="text" value="96" />
<span class="field-validation-valid" data-valmsg-for="Pages" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label"><label for="Plates">Plates or illustrations</label>
</td>
<td class="editor-label"><input class="text-box single-line" data-val="true" data-val-number="The field Plates or illustrations must be a number." id="Plates" name="Plates" type="text" value="64" />
<span class="field-validation-valid" data-valmsg-for="Plates" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label">
<label for="PlateType">Plate Type</label>
</td>
<td class="editor-label"><input class="text-box single-line" id="PlateType" name="PlateType" type="text" value="Full-colour photographs" />
<span class="field-validation-valid" data-valmsg-for="PlateType" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label">
<label for="Format">Format</label>
</td>
<td class="editor-label"><input class="text-box single-line" id="Format" name="Format" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Format" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td class="editor-label">
<label for="OtherSpecs">Other specifications</label>
</td>
<td class="editor-label">
<input class="text-box single-line" id="OtherSpecs" name="OtherSpecs" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="OtherSpecs" data-valmsg-replace="true"></span>
</td>
</tr>
</table>
</fieldset>
</form> </div>
</div>
</fieldset>
</form><div>
<a href="/Titles/Title">Back to List</a>
</div>
</td></tr>
</table>
答案 0 :(得分:0)
问题是输入字段的名称不正确。它们缺少指示主要父属性名称的前缀。这是因为使用了partials而不是编辑器模板。 Jimmy Bogard在blog post中完美地解释了这一点。
所以而不是:
@Html.Partial("_somePartial", Model.Profile)
使用:
@Html.EditorFor(x => x.Profile)
并且框架将负责正确命名字段。