2つの異なる強くタイプされたビューで1つの部分ビューをレンダリングする
-
27-09-2019 - |
質問
私は強くタイプされた人のビューを持っています、それは部分的にレンダリングしたい:
人のビュー(人として強くタイプされた)
<label for="name">Name</label>
<% Html.RenderPartial("AddressForm"); %>
</label>
addressform View(Untyped、私はこれを販売業者に強くタイプされたビューでも使用したいので)
個人ビューからこれを部分的に呼びかけようとすると、このエラーが得られます。
コンパイラエラーメッセージ:CS1963:式ツリーには動的操作が含まれていない場合があります
ソースエラー:
Line 8: </div>
Line 9: <div class="editor-field">
Line 10: <%= Html.TextBoxFor(model => model.addressLine1) %>
Line 11: <%: Html.ValidationMessageFor(model => model.addressLine1) %>
Line 12: </div>
他の複数のタイプで部分的なアドレスビューを使用できるように、この部分的なレンダリングをレンダリングするにはどうすればよいですか?
編集:
// GET: /Person/Create
public ActionResult Create()
{
Person person = new Person();
return View(person);
}
//Person create view
<% Html.RenderPartial("AddressForm"); %>
//AddressForm Partial
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<fieldset>
<legend>Address</legend>
<div class="editor-label">
<label for="addressLine1" class="addressLabel">Address Line 1</label>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.addressLine1) %>
<%: Html.ValidationMessageFor(model => model.addressLine1) %>
</div>
</fieldset>
エラーは上にあります。
解決
ダイナミックビューモデルを使用して、強力にタイプしたヘルパーを使用することはできません。
代わりに、このように、強力にタイプしていないヘルパーを使用できます。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<fieldset>
<legend>Address</legend>
<div class="editor-label">
<label for="addressLine1" class="addressLabel">
Address Line 1</label>
</div>
<div class="editor-field">
<%= Html.TextBox("addressLine1") %>
<%: Html.ValidationMessage("addressLine1") %> </div>
</fieldset>
他のヒント
アドレスフォームビューでレンダリングするモデルタイプの両方をインターフェイスを実装し、アドレスフォームをそのインターフェイスをモデルタイプとして部分的に使用できるようにすることで、すべてのビューを強く入力しておくことはできませんか?
所属していません StackOverflow