【问题标题】:Unable to get new selected value of @Html.DropDownListFor in case of using autobinding在使用自动绑定的情况下,无法获取 @Html.DropDownListFor 的新选定值
【发布时间】:2013-07-25 05:11:53
【问题描述】:

无法使用强类型视图的 MVC3(剃刀)中的 @Html.DropDownListFor 字段中的值绑定模型。

用于强类型视图的模型:

public class MyModel
{
  public string Name{get;set;}
  pulic int Status_ID{get;set;}
}

在强类型视图中:

@Html.DropDownListFor(m=> m.Status_ID, new SelectList(Repo.AllStatus, "ID", Name"), new   {@style = "width: 100%;" })

在提交表单之前,我选择了 ID=24 的选项(即选择了 value=24 选项)

在控制器中

public ActionResult AddMyModel(MyModel myModel)
{

}

在控制器中调试时,我得到了: myModel.Name 是预期值,但 myModel.Status_ID 是 0 而不是 24

我哪里错了??

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    您需要将一个视图模型传递给您的视图,其中所有状态都已填充。

    这是您问题的解决方案。修改它以适应您的场景。我希望我没有遗漏任何东西。下面的代码是我假设您的模型可能看起来的样子。

    你的身份等级:

    public class Status
    {
         public int Id { get; set; }
    
         public string Name { get; set; }
    }
    

    在您的视图中,您需要传入一个包含所有状态列表的视图模型:

    public class YourViewModel
    {
         public int StatusId { get; set; }
    
         public IEnumerable<Status> Statuses { get; set; }
    }
    

    你的控制器:

    public class YourController : Controller
    {
         private readonly IStatusRepository statusRepository;
    
         public YourController(IStatusRepository statusRepository)
         {
              this.statusRepository = statusRepository;
         }
    
         public ActionResult YourAction()
         {
              YourViewModel viewModel = new YourViewModel
              {
                   Statuses = statusRepository.FindAll()
              };
    
              return View(viewModel);
         }
    }
    

    然后您的视图将如下所示:

    @model YourProject.ViewModels.Statuses.YourViewModel
    
    @Html.DropDownListFor(
         x => x.StatusId,
         new SelectList(Model.Statuses, "Id", "Name", Model.StatusId),
         "-- Select --"
    )
    @Html.ValidationMessageFor(x => x.StatusId)
    

    我希望这可以帮助您朝着正确的方向前进,并阐明您正在努力实现的目标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      相关资源
      最近更新 更多