Как реализовать связывание модели Razor Pages со стандартным HTML? - PullRequest
0 голосов
/ 25 сентября 2018

В настоящее время я создаю веб-приложение с использованием ASP.NET MVC.У меня есть несколько форм, на мой взгляд, которые получают данные для размещения в теле ответа.Я хотел бы присоединить эти входные данные к моей модели представления, а затем передать свою модель представления обратно на контроллер, чтобы поработать с ними.

Вот пример того, что есть в моем веб-приложении:

<select id="ServiceSelect" size="3" style="width:600px; overflow-y:auto" multiple="multiple">
                <option value="Service 1" class="pad">Service 1 </option>
                <option value="Service 2" class="pad">Service 2</option>
                <option value="Service 3" class="pad">Service 3</option>
            </select> 

            <input type="hidden" id="service" name="service" value="" />
            
            <!-- this puts the two buttons side by side after the select -->
            <br />

            <input type="submit" name="start" value="Start Service(s)" />
            <input type="submit" name="stop" value="Stop Service(s)" />

(скрытый ввод заполняется с помощью функций jQuery на основе формы выбора)

Я хотел бы использовать характеристики привязки модели Razor Pages в порядкечтобы добавить мой скрытый ввод в мою модель при выборе одной из кнопок отправки.В настоящее время, благодаря Fiddler, я вижу, что он правильно заполняет тело ответа, но я думаю, что привязка нативной модели MVC может быть более понятным подходом.

Однако в примерах кода, таких как:

<td>
     @Html.DropDownListFor(m => m.Gender /* <- this being what I want */, new List<SelectListItem>
     { new SelectListItem{Text="Male", Value="M"},
       new SelectListItem{Text="Female", Value="F"}}, "Please select")
</td>

Я не вижу способа включить мои текущие функциональные возможности и стиль, которые я настроил, с помощью собственного тега выбора (множественный выбор, стиль).

Я новичок в Razor Pages, так что я не очень хорошо знаю синтаксис для его встроенных функций.Я считаю, что необработанный HTML легче кодировать, читать и стилизовать, но я не смог найти никаких онлайн-ресурсов, чтобы помочь мне с этой проблемой.

Есть ли способ воспользоватьсяMVC / Razor Pages моделируют характеристики привязки при включении собственных HTML-форм, а не менее расширяемых (на мой взгляд, ошибочных знаний и мнений) встроенных @Html?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Насколько я понимаю, вы ищете привязку модели

Чтобы реализовать то же самое, ваш код должен выглядеть следующим образом. Пример кода:

Просмотр

Индекс.cshtml

@model WebApplication3.Models.Test
@{
ViewBag.Title = "Home Page";
}


@using (Html.BeginForm("Save", "Home", FormMethod.Post))
{
 <div class="row">
 <div class="col-md-4">
    @Html.TextBoxFor(m => m.EmployeeName)

 </div>

 <input type="submit" value="Save" />

 </div>
}

Контроллер

 public ActionResult Index()
    {
        Test objTest= new Test();
        objTest.EmployeeName = "Test";
        return View(objTest);
    }
  public ActionResult Save(Test obj)
    {
        return View("About");
    }

Модель

 public class Test
{
    public string EmployeeName { get; set; }
}

Пожалуйста, следуйте тому жереализовать привязку модели

0 голосов
/ 25 сентября 2018

Итак, вы спросили много вещей, которые, я думаю, я поняла, но я не уверена, что все поняла.

Прежде всего вам нужно установить @model в верхней части страницы бритвы, чтобыполучите бритву, чтобы понять, какую модель вы используете.

Во-вторых, если вы хотите действие POST, вы должны быть такой код:

@Html.BeginForm(){
enter code here
}

И вы можете поставить скрытыйввод с использованием @Html.HiddenFor(model => model.service)

И последнее, что я понял, что вы спрашивали, это стили.

Каждый Html.HiddenFor или Html.TextBoxFor имеют необязательное значение построителя объектаhtmlAttributes.Вы можете использовать это для передачи стиля тегам, например:

@Html.TextBoxFor(txt => txt.name, new { @class= "textbox"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...