Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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中使用jquery将html选择标记(下拉)值传递给控制器?_C#_Asp.net Mvc_Select - Fatal编程技术网

C# 如何在asp.net mvc中使用jquery将html选择标记(下拉)值传递给控制器?

C# 如何在asp.net mvc中使用jquery将html选择标记(下拉)值传递给控制器?,c#,asp.net-mvc,select,C#,Asp.net Mvc,Select,我在mvc应用程序中使用.Split()方法从一系列字符串数组生成了一个选项,如下所示: @{ var ava = Model.AvailableSizes.Split(',').ToList(); } <select class="form-control input-sm"> <option>Select Size</option> @foreach (var item in ava) {

我在mvc应用程序中使用
.Split()
方法从一系列字符串数组生成了一个
选项,如下所示:

@{
   var ava = Model.AvailableSizes.Split(',').ToList();
 }
    <select class="form-control input-sm">
    <option>Select Size</option>
    @foreach (var item in ava)
       {
          <option>@item</option>
       }
    </select>
public ViewResult ProductDetails(int productId)
        {
            Product product = repository.Products
                .FirstOrDefault(p => p.ProductID == productId);

            return View(product);
        }
怎么可能呢?谢谢你抽出时间。 编辑:@Stephen我使用存储库而不是视图模型,如下所示:

@{
   var ava = Model.AvailableSizes.Split(',').ToList();
 }
    <select class="form-control input-sm">
    <option>Select Size</option>
    @foreach (var item in ava)
       {
          <option>@item</option>
       }
    </select>
public ViewResult ProductDetails(int productId)
        {
            Product product = repository.Products
                .FirstOrDefault(p => p.ProductID == productId);

            return View(product);
        }
那我该怎么处理呢? Edit2:@Stephen 以下是购物车索引方法:

public ViewResult Index(Cart cart, string returnUrl)
        {
            ViewBag.Message = "Dude, This gonna make it";
            return View(new CartIndexViewModel
            {
                ReturnUrl = returnUrl,
                Cart = cart
            });
        }
您的
元素没有
名称
属性,因此表单不会提交名称/值对。您可以使用

<select name="productId" class="form-control input-sm">
在控制器中

[HttpGet]
public ViewResult ProductDetails(int productId)
{
    Product product = repository.Products.FirstOrDefault(p => p.ProductID == productId);
    string[] sizes = product.AvailableSizes.Split(',');
    ProductVM model = new ProductVM()
    {
        ID = product.ProductId,
        Name = product.Name
        AvailableSizes = new SelectList(sizes),
        ReturnUrl = ....
    };
    return View(model);
}
在我看来

@model ProductVM
....
@using (Html.BeginForm())
{
    ....
    @Html.LabelFor(m => m.SelectedSize)
    @Html.DropDownListFor(m => m.SelectedSize, Model.AvailableSizes, "Select Size", new { @class="form-control input-sm" }))
    @Html.ValidationMessageFor(m => m.SelectedSize)
最后在POST方法中,包括视图模型的参数

[HttpPost]
public ActionResult AddToCart(Cart cart, ProductVM model)

model.ProductID
的值将是所选的值。还请注意,您应该检查
ModelState.IsValid的值,如果没有,请重新填充
SelectList
并返回视图。

在AddToCart方法中,获取下拉列表的值
int selectedValue=Request.Form[“input sm”].AsInt()
当然可以-
@Html.DropDownListFor(m=>m.yourProperty,Model.yourSelectList,“选择大小”,new{@class=“form control input sm”})
。和代码,例如
var ava=Model.AvailableSizes.Split(',').ToList()
属于控制器,而不是视图。请给我30分钟时间。
productId
是您尝试绑定到的属性还是其他值?是。您希望将所选大小绑定到的模型中的属性是什么?您又说了2条注释,不是:)当我将此
public string AvailableSizes{get;set;}
更改为
public IEnumerable AvailableSizes{get;set;}
时,在我的模型中,我得到一个错误,即错误3 Assembly'Ozhay.Domain,Version=1.0.0,Culture=neutral,PublicKeyToken=null“使用”System.Web.Mvc,版本=5.2.3.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”,其版本高于引用的程序集“System.Web.Mvc,版本=5.2.2.0,区域性=neutral,PublicKeyToken=31bf3856ad364e35'c:\Users\Naser Dostdar\Documents\Visual Studio 2013\Projects\Ozhay\Ozhay.Domain\bin\Debug\Ozhay.Domain.dll Ozhay.webui首先,您是否在视图模型(而不是数据模型)中执行此操作。其次,该错误与
web.config.cs
文件中使用的版本不正确有关(在其中的某个地方,您有冲突的版本-
Version=5.2.2.0
不等于
Version=5.2.3.0
)。如果你无法解决问题,那么你需要问一个新问题,显示错误消息和你的
web.config
文件的内容,因为这将在你的应用程序的其他地方引起其他问题。Stephen我更新了我遇到的问题,这类问题没有引起注意,你能看一下吗?非常需要您的帮助,谢谢您编辑中的代码将很好地工作,尽管它的做法很糟糕。您只需将
SelectList
作为
ViewBag
属性传递,并将视图更改为
@Html.DropDownListFor(m=>m.ProductID,(IEnumerable)ViewBag.AvailableSizes,
。但为什么不想正确执行此操作并将数据模型映射到视图模型?我的最佳猜测是,您有一个视图来选择产品(下拉列表?)并为该产品选择尺寸?