【问题标题】:checkboxlist in asp.net MVC edit view don do postbackasp.net MVC 编辑视图中的复选框列表不要回发
【发布时间】:2012-07-13 23:59:59
【问题描述】:

所以用这个例子来做一个复选框列表

checkboxlist in asp.net MVC

它在我的创建(用于新注册)中工作正常,但在我的编辑中却没有,无法弄清楚为什么 我的班级:

public class cliente
    {
        [Key ,DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int id { get; set; }

        [DisplayName("Nombre")]
        [Required(ErrorMessage = "Descripcion es requerido.")]
        [MaxLength(100, ErrorMessage = "El Nombre no puede contener mas de 100 caracteres")]
        public string descripcion {get; set;}


        [DisplayName("Visita")]
        public string visita { get; set; } 


        public Dias DiasVisita { get; set; }

       //more properties..

        [Flags]//<-- Note the Flags attribute
        public enum Dias
        {
            Lunes = 1,
            Martes = 2,
            Miercoles = 4,
            Jueves = 8,
            Viernes = 16,
            Sabado = 32,
            Domingo = 64,
        }

我的看法。

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Cliente</legend>

        @Html.HiddenFor(model => model.id)
        @Html.HiddenFor(model => model.categoria)
        @Html.HiddenFor(model => model.visita)

        <div class="editor-label">
            @Html.LabelFor(model => model.descripcion)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.descripcion, new { style = "width: 300px;" })
            @Html.ValidationMessageFor(model => model.descripcion)
        </div>


      <div class="editor-label">
       @Html.LabelFor(model => model.visita)
    </div>

    <div class="editor-field">
        @Html.CheckboxListForEnum("dias", Model.DiasVisita)
    </div>

      <div class="editor-label">
       @Html.LabelFor(model => model.orden)
    </div>

        <div class="editor-field">
            @Html.TextBoxFor(model => model.orden)
            @Html.ValidationMessageFor(model => model.orden)
        </div>

        <p>
            <input type="submit" value="Guardar" />
        </p>
    </fieldset>
}

当我按下按钮调试时控制器动作编辑器没有进入这里

 [HttpPost]
        public ActionResult Editar(cliente cliente, string[] dias)
        {
    }

当我按下按钮时,我怎么知道它的去向或寻找什么? 奇怪的是我的创作和这次编辑一样,但是创作工作

【问题讨论】:

  • 如果你用 Firebug 在 Firefox 中运行它。如果您打开“网络”选项卡,当您按下按钮时它会尝试去哪里?
  • 如果它们在同一区域,您是否尝试过 Html.BeginForm("ControllerName" , "Editar"),而不是纯 Html.BeginForm()?

标签: c# asp.net-mvc


【解决方案1】:

当您按下提交按钮时,控制器会自动从提交的表单中获取您指定的字段的 post 值。

如果您想调试,请在控制器的操作中放置一个断点,并查看模型对象中所有发布的值,因为模型绑定会自动为您完成

【讨论】:

  • 我的错误是我必须隐藏我班级的 DiasVisita 属性并且现在正在工作 @Html.HiddenFor(model => model.DiasVisita)
【解决方案2】:

当我按下按钮时,我怎么知道它去了哪里或它在寻找什么?

1) 有很多工具可以监控网络。必须众所周知的是:

  1. Firebug - 火狐
  2. Fiddler2

2) 正如 HatSoft 所说,您按下按钮提交表单标签内的所有字段。

3) 如果您想更具体地定义发布请求的去向,请使用 FormExtensions.BeginForm 重载,在您的情况下,您可以使用:

Html.BeginForm("YourControllerName", "Editar", new {area="YourAreaName"}) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2013-08-05
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多