C# DropDownList始终显示第一个元素

C# DropDownList始终显示第一个元素,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一个下拉列表,它有两个项目。当我选择第二个时,它会闪烁,然后立即返回第一个 @Html.DropDownListFor(m => m.SelectedProduct, new SelectList(Model.Products, "ProductCode", "ProductName",Model.SelectedProduct),new { @class = "form-control" }) 我的控制器代码 public ActionResult Index(int id, st

我有一个下拉列表,它有两个项目。当我选择第二个时,它会闪烁,然后立即返回第一个

@Html.DropDownListFor(m => m.SelectedProduct, new SelectList(Model.Products, "ProductCode", "ProductName",Model.SelectedProduct),new { @class = "form-control" })
我的控制器代码

public ActionResult Index(int id, string productName)
    {
        var model = new ProductModel
        {
            Product = ProductService.GetProducts()
        };

        var view = "Something";
        model.SelectedProduct = productName;
        if(productName =="another")
            view = "another";
        return View(view, model);
    }
Model.Products的类型为IList

我看到了,但我的控制器中没有ViewData。所以请帮帮我

我的客户端代码:

 $(document).ready(function () {
        $("#SelectedProduct").change(function () {
            var selectedValue = $(this).find('option:selected').text();

            window.location.href = "@(Url.RouteUrl("MyRoute", new { id = Model.id }))/" + encodeURI(selectedValue);
    });

问题在于传递给的选定项参数

新建SelectListModel.Products、ProductCode、ProductName、Model.SelectedProduct

这需要Model.SelectedProduct保存SelectList中某个项目的值

但是您的JS代码通过var selectedValue=$this.find'option:selected'。text;这是名字

将此更改为
var selectedValue=$this.find'option:selected'.val;传递产品代码。

您确定这是ASP.NET问题而不是JavaScript问题吗?是在更改值后重新加载页面,还是一切都发生在客户端?发生这种情况时是否有clientserver通信?我添加了客户端代码。我确信selectedValue是正确的。你在js中的重定向看起来很奇怪。是否确实已将此请求路由到您在上面发布的操作,并按预期填充productName?你能显示你的路线配置吗?是的,在我的控制器里。我看到productName是第二项。浏览器上的url也使用第二个产品名称。@Bigeyes-Hi。。您试图实现的功能是什么?从下拉列表中选择项目时,您希望发生什么?感谢SelectList构造函数的第四个参数在使用'using DropDownList for'绑定到模型属性时被忽略,应该删除它的无意义参数。注意,它可以是var selectedValue=$this.val;
 $(document).ready(function () {
        $("#SelectedProduct").change(function () {
            var selectedValue = $(this).find('option:selected').text();

            window.location.href = "@(Url.RouteUrl("MyRoute", new { id = Model.id }))/" + encodeURI(selectedValue);
    });