C# 视图中的ASP.NET MVC绑定值
努力从下拉列表中获取一个值,并将其传递到我的控制器中进行db插入。 它从下拉列表中每个项目的一个简单类开始C# 视图中的ASP.NET MVC绑定值,c#,asp.net-mvc,C#,Asp.net Mvc,努力从下拉列表中获取一个值,并将其传递到我的控制器中进行db插入。 它从下拉列表中每个项目的一个简单类开始 public class selectListUrgencyNum { public string Text { get; set; } public string Value { get; set; } } 然后在视图模型中创建这些对象的列表 public class createViewModel { public Change Changevm { get
public class selectListUrgencyNum
{
public string Text { get; set; }
public string Value { get; set; }
}
然后在视图模型中创建这些对象的列表
public class createViewModel
{
public Change Changevm { get; set; }
public List<RequestType> rTypes { get; set; }
public List<selectListUrgencyNum> listUrgency { get; set; }
}
公共类createViewModel
{
公共更改Changevm{get;set;}
公共列表rTypes{get;set;}
公共列表{get;set;}
}
最后是我的控制器,我填充此列表以显示在下拉列表中
public ActionResult Create()
{
var urgNums = new List<selectListUrgencyNum>();
for(int i = 1; i < 6; i++)
{
urgNums.Add(new selectListUrgencyNum() { Text = i.ToString(), Value = i.ToString() });
}
var viewModel = new createViewModel
{
listUrgency = urgNums
};
return View(viewModel);
}
public ActionResult Create()
{
var urgNums=新列表();
对于(int i=1;i<6;i++)
{
Add(新selectListUrgencyNum(){Text=i.ToString(),Value=i.ToString()});
}
var viewModel=新的createViewModel
{
listnums=urgNums
};
返回视图(viewModel);
}
我只是用了1-5来简化理解
我的视图创建了这样的ddl
<div class="form-group">
@Html.LabelFor(model => model.Changevm.UrgencyNum, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-2">
<select class="form-control" id="select">
<option> 1 = Least Urgent</option>
@foreach(var item in Model.listUrgency)
{
<option>@item.Text</option>
}
</select>
@*How do I grab the value of what is selected??*@
@Html.ValidationMessageFor(model => model.Changevm.UrgencyNum, "", new { @class = "text-danger" })
</div>
@LabelFor(model=>model.Changevm.UrgencyNum,htmlAttributes:new{@class=“controllabel col-md-2”})
1=最不紧急
@foreach(Model.listName中的var项)
{
@项目.案文
}
@*如何获取所选内容的值*@
@Html.ValidationMessageFor(model=>model.Changevm.UrgencyNum,“,new{@class=“text danger”})
因此,我不确定如何获取所选下拉选项的值,以便在插入时可以访问它。可能是个藏身之所
如果我使用隐藏的,它会是什么样子
如果已经回答,请将..添加
名称属性到您的选择
<select class="form-control" id="select" name="selectedUrgency">
假设您给定的html有
标记,其操作url指向此操作方法。如果您只想传递文本和值,可以使用System.Web.Mvc中的SelectListItem
类,用于将项传递到下拉列表
公共类CreateViewModel
{
公共更改ChangeVm{get;set;}
公共列表类型{get;set;}
公共列表{get;set;}
}
在Controller Create()方法中,我们还创建了新的ChangeVm
var viewModel = new CreateViewModel()
{
ChangeVm = new Change(),
ListUrgency = urgNums
};
return View(viewModel);
在视图中,您可以使用Html.DropDownListFor
扩展方法,该方法将负责创建包含给定项和正确名称的列表
Html.BeginForm
将负责使用正确的“操作”url和方法创建表单
@using (Html.BeginForm("Create", "Home", FormMethod.Post))
{
<div class="form-group">
@Html.LabelFor(model => model.ChangeVm.UrgencyNum, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-2">
@Html.DropDownListFor(model => model.ChangeVm.UrgencyNum, Model.ListUrgency, "Choose Urgency...")
@Html.ValidationMessageFor(model => model.ChangeVm.UrgencyNum, "", new { @class = "text-danger" })
</div>
<input type="submit" value="Submit"/>
</div>
}
如果一切顺利,您应该在vModel.ChangeVm.UrgencyNum中选择您的值,当您进行回发时,该值将在那里。在select上设置name属性。Id代表jquery,name代表form post。你真的需要学习基础知识。要生成一个
请使用@Html.DropDownListFor(m=>m.Changevm.UrgencyNum,Model.listUrgency,…)
假设listUrgency
是IEnumerable
它应该是什么。我用这个来代替它@使用(Html.BeginForm())是的,它是相同的。只需确保它使用HttpPost
属性指向您的操作方法。不幸的是,它仍然没有获取值。我的错误。现在工作!!谢谢。这是我的初衷!我喜欢这个。
@using (Html.BeginForm("Create", "Home", FormMethod.Post))
{
<div class="form-group">
@Html.LabelFor(model => model.ChangeVm.UrgencyNum, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-2">
@Html.DropDownListFor(model => model.ChangeVm.UrgencyNum, Model.ListUrgency, "Choose Urgency...")
@Html.ValidationMessageFor(model => model.ChangeVm.UrgencyNum, "", new { @class = "text-danger" })
</div>
<input type="submit" value="Submit"/>
</div>
}
[HttpPost]
public ActionResult Create(CreateViewModel vModel)
{
if(vModel?.ChangeVm?.UrgencyNum != null)
{
var chosenValue = vModel.ChangeVm.UrgencyNum;
}
return View(vModel);
}