Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 视图中的ASP.NET MVC绑定值_C#_Asp.net Mvc - Fatal编程技术网

C# 视图中的ASP.NET MVC绑定值

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

努力从下拉列表中获取一个值,并将其传递到我的控制器中进行db插入。 它从下拉列表中每个项目的一个简单类开始

 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);
    }