控制器中可从下拉列表中的后操作获得的内容

本文关键字:操作 下拉列表 控制器 | 更新日期: 2024-08-10 03:25:02

试图解包一些继承的代码,而我是ASP.NET的新手。我的问题是:

从C#(ASP.NET MVC5)中的下拉列表中的后操作,控制器中有什么可用

以下是我的看法:

 @using (Html.BeginForm("SignUp", "Location", FormMethod.Post))
 ....
 @Html.DropDownListFor(
 model => model.Member.PillarId, new SelectList (Model.Pillars, "Id", "Title"))

这是MemberViewModel:

 public class MemberViewModel : IValidatableObject{
    public int? LocationId { get; set; }
    public int? PillarId { get; set; }  
     }

这是Member型号:

public class Member
{
    public int Id { get; set; }        
    public string Name { get; set; }   
    public int? LocationId { get; set; }
    public int? PillarId { get; set; }
    public String PillarTitle { get; set; }

以下是Member模型构造函数:

    public Member() { }
    public Member(MemberViewModel member)
    { 
        PillarId = member.PillarId;
        ///
    }

这是控制器

 public ActionResult SignUp(MemberViewModel member){///}

我的表单正确地从数据库中提取信息以显示,并通过控制器正确地发布到数据库。我不想更改用户可供选择的视觉选项(即,我认为ListBox已过时?)。

相反,我希望根据Member.PillarIdMember.Title的选择来分配它们,并在Controller中为非DB操作提供它。

Controller中的SignUp方法中当前可用的是什么?我可以打Model.Pillars.Title吗?是member.PillarId.Pillars.Id吗?如果没有,如何根据用户选择动态分配?

这段代码中有很多视图和模型视图,我不确定有什么可用的。。。

SO在DropDownList上有很多答案,所以这里有一些文章样本,这些文章与我所获得的内容有些相关…
*此答案
*列表框
*ListBoxFor:不是MVC动态
*SelectList构造函数:非MVC

控制器中可从下拉列表中的后操作获得的内容

对于下拉列表,在过帐时返回的唯一值是所选项目的值。

如果你想返回其他内容,你需要在页面上有一个隐藏字段,并将更改事件侦听器绑定到下拉列表,以在隐藏字段中设置标题

public class MemberViewModel : IValidatableObject{
    public int? LocationId { get; set; }
    public int? PillarId { get; set; }  
    public string Title { get; set;}
}

@using (Html.BeginForm("SignUp", "Location", FormMethod.Post))
 ....
 @Html.DropDownListFor(
 model => model.Member.PillarId, new SelectList (Model.Pillars, "Id", "Title"))
 @Html.HiddenFor(model => model.Title);

javascript

 $('#idofdropdown').on('change', function()
  {
     var selectedTitle = $(this).find(":selected").text();
     $('#Title').val(selectedTitle);
  });

如何从下拉列表中获取选定标题:使用jQuery 从下拉列表(选择框)中获取选定文本

然后在您的控制器中,您的视图模型将在标题字符串中包含标题文本:)