0 голосов
спросил от в категории ASPNETMVC
Вот пример.

Модель : YourDummyModel - это объект/модель приложения, YourDummyControl должен удерживаться имя/идентификатор управления и значение
public class YourDummyModel {     public string FieldOne { get; set; }     public string FieldTwo { get; set; } } public class YourDummyControl {     public string ControlName { get; set; }     public string ControlValue { get; set; } }


Контроллер : при загрузке страницы залейте модель некоторыми фиктивные данные. В Postback приложение должно вернуть значение в текстовом поле в контроллер
public ActionResult TestPartialView() {     var model = new YourDummyModel();     model.FieldOne = "Your Field 1";     model.FieldTwo = "Your Field 2";     return View(model); } [HttpPost] [AllowAnonymous] public ActionResult TestPartialView(YourDummyModel model) {     return View(model); }


_MySharedView.cshtml :Это общий элемент управления представлением/пользователем
@model WebApplication1.Models.YourDummyControl <div class="form-group">     @Html.Label(Model.ControlName, new { @class = "col-md-2 control-label" })     <div class="col-md-10">         @Html.TextBox(Model.ControlName , Model.ControlValue, new { @class = "form-control" })     </div> </div>


YourView . Это вид страницы в реальность, ваша страница может иметь больше элементов. Страница вызовет метод Html.RenderPartial для загрузки частичного представления и передачи имени элемента управления и управления из класса Model.
@model WebApplication1.Models.YourDummyModel <h2>TestPartialView</h2> @using (Html.BeginForm()) {     Html.RenderPartial("~/Views/shared/_MySharedView.cshtml",                 new WebApplication1.Models.YourDummyControl { ControlName = "FieldOne", ControlValue = Model .FieldOne  });     Html.RenderPartial("~/Views/shared/_MySharedView.cshtml",                new WebApplication1.Models.YourDummyControl { ControlName = "FieldTwo", ControlValue = Model.FieldTwo  });     <input type="submit" value="Create" class="btn btn-default" /> }


Более сложное управление:
public class YourDummyModel {     public string FieldOne { get; set; }     public string FieldTwo { get; set; } } public class YourDummyControl {     public string ControlName { get; set; }     public string ControlValue { get; set; } }
# [
public ActionResult TestPartialView() {     var model = new YourDummyModel();     model.FieldOne = "Your Field 1";     model.FieldTwo = "Your Field 2";     return View(model); } [HttpPost] [AllowAnonymous] public ActionResult TestPartialView(YourDummyModel model) {     return View(model); }
#]

Дополнительная информация:
@model WebApplication1.Models.YourDummyControl <div class="form-group">     @Html.Label(Model.ControlName, new { @class = "col-md-2 control-label" })     <div class="col-md-10">         @Html.TextBox(Model.ControlName , Model.ControlValue, new { @class = "form-control" })     </div> </div>
# [
@model WebApplication1.Models.YourDummyModel <h2>TestPartialView</h2> @using (Html.BeginForm()) {     Html.RenderPartial("~/Views/shared/_MySharedView.cshtml",                 new WebApplication1.Models.YourDummyControl { ControlName = "FieldOne", ControlValue = Model .FieldOne  });     Html.RenderPartial("~/Views/shared/_MySharedView.cshtml",                new WebApplication1.Models.YourDummyControl { ControlName = "FieldTwo", ControlValue = Model.FieldTwo  });     <input type="submit" value="Create" class="btn btn-default" /> }
#]

Надеюсь, что эта помощь. Если не спросить.

Пожалуйста, войдите или зарегистрируйтесь чтобы ответить на этот вопрос.

0 голосов
ответил от
Большое спасибо Брайану. Вы поставили меня на правильный путь с классом DummyControl. Мой пользовательский контроль в реальном мире должен был иметь около 12 входов на нем, поэтому наличие контрольного имени для каждого из них было немного грязным. В конечном итоге я искал свойство HtmlFieldPrefix для решения проблемы с уникальными идентификаторами ввода. Вот простой пример решения, в котором я закончил:

// data model public class Person {     public string Name { get; set; }     public DateTimeControl DateOfBirth { get; set; }     public DateTimeControl DateOfDeath { get; set; } } // model to hold UserControl values public class DateTimeControl {     [Display(Name = "Day: ")]     public string Day { get; set; }     [Display(Name = "Month: ")]     public string Month { get; set; }     [Display(Name = "Year: ")]     public string Year { get; set; } } 


И частичное представление выглядит следующим образом: < br>
@model Models.DateTimeControl <div class="form-group">     @Html.LabelFor(m => m.Day)     @Html.EditorFor(m => m.Day, new { @class = "form-control" }) </div> <div class="form-group">     @Html.LabelFor(m => m.Month)     @Html.EditorFor(m => m.Month, new { @class = "form-control" }) </div> <div class="form-group">     @Html.LabelFor(m => m.Year)     @Html.EditorFor(m => m.Year, new { @class = "form-control" }) </div>

Затем я могу использовать частичный просмотр несколько раз в одном представлении, превзойдя уникальные идентификаторы с свойством HtmlFieldPrefix.
2 ## #

Итак, сгенерированный HTML:
                    <div class="form-group">     <label for="DateOfBirth_Day">Day: </label>     <input class="text-box single-line" id="DateOfBirth_Day" name="DateOfBirth.Day" type="text" value="" /> </div> <div class="form-group">     <label for="DateOfBirth_Month">Month: </label>     <input class="text-box single-line" id="DateOfBirth_Month" name="DateOfBirth.Month" type="text" value="" /> </div> <div class="form-group">     <label for="DateOfBirth_Year">Year: </label>     <input class="text-box single-line" id="DateOfBirth_Year" name="DateOfBirth.Year" type="text" value="" /> </div>                     <div class="form-group">     <label for="DateOfDeath_Day">Day: </label>     <input class="text-box single-line" id="DateOfDeath_Day" name<span

Категории

Добро пожаловать на сайт DraftingCode Q&A, где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...