تقديم عرض جزئي واحد في عرضين مختلفين مكتوبة بقوة
-
27-09-2019 - |
سؤال
لدي عرض شخص مكتوب بقوة ، وأريد تقديم جزء في:
عرض الشخص (يكتب بقوة كشخص)
<label for="name">Name</label>
<% Html.RenderPartial("AddressForm"); %>
</label>
عرض المعالجة (غير نمط ، لأنني أريد أيضًا استخدام هذا في العرض المكتوب بقوة)
عندما أحاول استدعاء هذا الجزئي من عرض الشخص ، أحصل على هذا الخطأ:
رسالة خطأ المترجم: 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>
الخطأ أعلاه.
المحلول
لا يمكنك استخدام المساعدين المكتوبة بقوة باستخدام Dynamic ViewModel:
يمكنك استخدام المساعدين غير المكتوبة بقوة بدلاً من ذلك ، مثل هذا:
<%@ 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>
نصائح أخرى
ألا يمكنك ببساطة الاحتفاظ بجميع وجهات النظر الخاصة بك بكتابة بقوة من خلال السماح لكل من أنواع النماذج التي تريد تقديمها في عرض المعالجة الخاص بك ، وترك واجهة ، والسماح لجزئي للاستخدام تلك الواجهة كنوع طراز الخاص بها؟