Добавить объект из вида (передача из вида в контроллер) - PullRequest
0 голосов
/ 19 февраля 2019

Я работаю в проекте C #.В моем представлении ReglasDispositivos клиент может выполнить три различных действия: добавить устройство, обновить устройство и удалить его один раз.Контроллер вызывает представление ReglasDispositivos () (get), передавая модель ClienteReglasDispositivos.Перейдем, например, к добавлению устройства.Как я могу опубликовать информацию, которую публикует клиент?Если в моем представлении есть только одно действие, я знаю, что мне нужно добавить в метод контроллера [HttpPost] и [HttpGet] ReglasDispositivos ().Но когда представление имеет три различных действия?

ClientController:

        [HttpGet]
        public ActionResult ReglasDispositivos()
        {
            ClienteReglasDispositivos model = new ClienteReglasDispositivos();

            return View(model);
        }

Представление ReglasDispositivos (Добавление устройства parte) (я не уверен насчет этого BeginForm):

@model SistemaGestion.Models.ClienteReglasDispositivos
...
<div class="view-tables">
            <div id="myAdd" class="div-table">
                @using (Html.BeginForm("AgregarDispositivo", "Client", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
                {
                    <fieldset class="fieldset-box">
                        <div class="editor-field">
                            @Html.TextBoxFor(model => model.NombreDispositivo, new { Class = "YourBackgroundClass", Placeholder = "Nombre del dispositivo" });
                        </div>
                        <div class="editor-field">
                            @Html.TextBoxFor(model => model.HorasDeUso, new { Class = "YourBackgroundClass", Placeholder = "KwPorHora" });
                        </div>
                        <div class="editor-field">
                            @Html.CheckBoxFor(model => model.EsInteligente, new { Class = "YourBackgroundClass" });
                        </div>
                        <input type="submit" class="submit-login" value="AGREGAR" />
                    </fieldset>
                }

            </div>

ClienteReglasDispositivos

public class ClienteReglasDispositivos
    {
        [Required]
        public string NombreDispositivo { get; set; }
        [Display(Name = "Es inteligente?")]
        public bool EsInteligente { get; set; }
        public double KwPorHora { get; set; }
        public float HorasDeUso { get; set; }
        public string Condicion { get; set; }
    }

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете иметь несколько действий с одинаковым именем из-за полиморфизма.Asp решает, какое действие вы вызываете, [Http(XX)].

Вы можете иметь

[HttpGet]
public ActionResult ReglasDispositivos()
{
    ClienteReglasDispositivos model = new ClienteReglasDispositivos();
    return View(model);
}

[HttpPost]
public ActionResult ReglasDispositivos([FromForm] ClienteReglasDispositivos  model)
{
    if(ModelState.IsValid(model)) {
     //do something
    }
    return View(model);
}

Также вы можете вызвать другое имя действия и вернуть то же представление

[HttpGet]
public ActionResult ReglasDispositivos()
{
    ClienteReglasDispositivos model = new ClienteReglasDispositivos();
    return View(model);
}

[HttpPost]
public ActionResult ReglasDispositivosPost([FromForm] ClienteReglasDispositivos  model)
{
    return View("ReglasDispositivos", model);
}

Читать дальше

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