0

无法使用强类型视图的 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

我哪里错了??

4

1 回答 1

2

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

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

您的身份等级:

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)

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

于 2013-07-25T07:54:35.657 回答