ASP.NET MVC - 下拉列表选择 - 部分视图和模型绑定
我对 ASP.NET MVC 相当陌生,正在尝试找出实现此目的的最佳方法。这可能很简单,但我只是想正确地做事,所以我想我会问。
假设我有一个模型是这样的:
任务 - Id、描述、AssignedStaffMember
StaffMember - Id、FirstName、LastName
在我看来,我想创建一个新任务。我创建了一个强类型的 Razor 视图,并且可以使用 EditorFor 为“描述”创建文本框,但是“AssignedStaffMember”又如何呢?
我想要一个所有当前员工的下拉列表,并且可以选择一个,然后将其提交给一个操作方法,该方法是 NewTask(字符串描述,StaffMember 分配的StaffMember)
或者我可以用一个int代表staffId而不是StaffMember对象,然后在action方法中查找它。
最好的方法是什么?我需要去数据库获取员工列表,所以这就是我的想法:
为员工下拉列表创建一个部分视图,该视图将使用几次并使用
@Html。 Action("ListStaff", "Staff")
来调用它。然后动作方法有public ActionResult ListStaff() { IEnumerable<职员>模型 = _serviceLayer.GetAllStaff(); 返回 PartialView(模型); }
但是我不确定这将如何与模型绑定一起使用,我的理解是它必须具有正确的表单名称才能提交,我需要将名称传递给部分视图以放置在我猜的元素上?
不要让它调用控制器来获取人员,而是创建一个包含我的任务和 IEnumerable possibleStaff 集合的 ViewModel。可能会将此信息发送到部分视图。
Html 助手?
是否可以使用EditorFor?
哪一个(或还有更多)最好?我将如何进行模型绑定?
I'm fairly new to ASP.NET MVC and am trying to work out the best way to do this. It's probably simple but I just want to do things correctly so I thought I'd ask.
Lets say I have a model that is this:
Task - Id, Description, AssignedStaffMember
StaffMember - Id, FirstName, LastName
and in my view I want to create a new task. I make a strongly typed Razor view, and can use EditorFor to create textboxes for Description but what about AssignedStaffMember?
I want a drop down list of all current staff and have the option of selecting one, then this gets submitted to an action method which isNewTask(string description, StaffMember assignedStaffMember)
either that or I could have an int for staffId instead of the StaffMember object and look it up in the action method.
What is the best way to do this? I need to go to the database to get the list off staff, so here's what I thought:
Make a partial view for the listing of staff drop down, which will be used a few times and use
@Html.Action("ListStaff", "Staff")
to call it. The action method then haspublic ActionResult ListStaff() { IEnumerable<StaffMember> model = _serviceLayer.GetAllStaff(); return PartialView(model); }
However I'm not sure on how this will work with model binding, my understanding is that it has to have the correct name for the form to submit it, I'd need to pass the name to the partial view to put on the element I guess?
Instead of having it call a controller to get the staff, make a ViewModel that contains my Task and a IEnumerable possibleStaff collection. possibly send this information to a partial view.
a Html Helper ?
EditorFor could somehow be used?
which one (or is there more) would be best? and how would I do the model binding?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是执行此操作的一种方法。 创建一个 TaskDetailsViewModel
在视图中的控制器中
(与 TaskDetailsViewModel 强绑定)
Here is one way to do this. Create a TaskDetailsViewModel
In Controller
In View (bound strongly to TaskDetailsViewModel)