Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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/4/oop/2.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# 使用ADO数据模型和ASP.NET MVC4下拉选择值_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 使用ADO数据模型和ASP.NET MVC4下拉选择值

C# 使用ADO数据模型和ASP.NET MVC4下拉选择值,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,很难将所选值粘贴到ASP.NET MVC页面上 public partial class AdjustedCost { public SelectList BrandList { get; set; } public string Brand { get; set; } } 正在控制器中设置品牌列表: private static SelectList BrandList = new SelectList( new[] { "Brand1","Brand2","Bra

很难将所选值粘贴到ASP.NET MVC页面上

public partial class AdjustedCost
{
    public SelectList BrandList { get; set; }

    public string Brand { get; set; }
}
正在控制器中设置品牌列表:

    private static SelectList BrandList = new SelectList( new[] { "Brand1","Brand2","Brand3" } );

    public ActionResult EditByTextbox(String textBoxEdit)
    {
        ...
        AjustedCost xadjcost = db.xAdjCost.First(e => e.InvtId == textBoxEdit);

        ...
        xadjcost.BrandList = BrandList;

        return View( "Edit", xadjcost);
    }
在编辑视图中:

     @Html.DropDownListFor(model => model.Brand, Model.BrandList )

这是正确的吗?下拉部分正在工作,但所选值只是返回列表的顶部,而不是当前实际设置的值。

您需要将selectedValue传递到SelectList的构造函数中,而不是使用静态变量,该变量与数据库中的当前值没有上下文关系

因此,我将创建一个方法,在需要选择的值的上下文中为您提供选择列表,即

private SelectList BrandList(string selectedValue)
{
    SelectList selectList = null;
    List<SelectListItem> selectListItems = null;

    try
    {
        selectListItems = new List<SelectListItem>();
        selectListItems.Add(new SelectListItem { Text = "Brand1", Value = "Brand1" });
        selectListItems.Add(new SelectListItem { Text = "Brand2", Value = "Brand2" });
        selectListItems.Add(new SelectListItem { Text = "Brand3", Value = "Brand3" });
        selectList = new SelectList(selectListItems, "Value", "Text", selectedValue);
    }
    catch (Exception exception)
    {
        exception.Log(); // or whatever you do with your exceptions
    }

    return selectList;
}
变成:

xadjcost.BrandList = BrandList(whateverTheBrandValueFromYourDbIs);

成本是多少?这与调整后的成本等级相同还是不同的型号?如果它们相同,您的品牌属性是否包含SelectList Brand1、Brand2、Brand3中的一个值???是否检查了下拉列表中显示的选定项值?要检查的另一件事是是否有任何名为Brand的ViewBag或ViewData值。如果是这种情况,它们都将进入FormCollection并相互覆盖。基本上,您不能使用与模型属性之一相同的名称命名viewbag或viewdata!!!相同的抱歉,在代码中重命名了它们以使其更具可读性,但最终使其可读性降低。感谢您的输入,我们将查看它们是否共享名称。我是MVC的新手,对不透明的程度感到非常惊讶;至少对新用户来说是这样。您可能还想看看您的值的大小写。我不确定型号活页夹是否与brand1匹配。当我使用下拉列表时,我通常使用键-整数。。。但最难发现的问题是,在代码的某个地方定义了ViewBag.Brand。这将导致下拉列表无法选择正确的值。您正在控制器中的某个位置设置xadjcost.Brand,对吗?它不在你的示例代码中。对于一个伟大的、诚实的努力,给出了+1。不幸的是,这也不起作用。我有一种感觉,它挂断了与ADO。我们会到达那里。这个代码应该可以工作。因此,为了确认您的问题:当表单呈现到屏幕时,所选的值没有被选中?如果是这样,您是否已调试以确保品牌价值同时进入控制器和视图中的模型?您是否也确定DB值与select item选项之间存在精确匹配?选定的值会一直到razor模板文件。当我展开SelectList时,它会显示一个选中的项目。确切的匹配问题可能就是它。我过去在字符串比较和C方面遇到过一些问题。这就是为什么我认为这是一个ADO问题,可能是因为它没有按照预期进行比较。好吧,现在的问题是,在展开框以显示选项后,选择框仅显示所选项?我将在您的位置检查两件事:1。字符串精确匹配;2.没有javascript/jquery干扰下拉列表。
xadjcost.BrandList = BrandList(whateverTheBrandValueFromYourDbIs);