从视图添加对象(从视图传递到控制器)

时间:2019-02-19 14:23:27

标签: c# asp.net-mvc razor

我正在从事C#项目。在我的ReglasDispositivos视图中,客户端可以执行三种不同的操作:添加设备,更新设备并删除一次。控制器通过传递ClienteReglasDispositivos模型来调用ReglasDispositivos()(获取)视图。例如,让我们开始添加设备。如何发布客户发布的信息? 如果我的视图只有一个动作,那么我知道我必须添加控制器[HttpPost]和[HttpGet] ReglasDispositivos()方法。但是,当一个视图具有三个不同的动作时?

ClientController:

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

            return View(model);
        }

ReglasDispositivos视图(添加设备角色)(不确定该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 :(得分:0)

由于多态性,您可以具有名称相同的多个动作。 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);
}

Read more