Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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 dropdownlist值不反映模型的值_C#_Asp.net Mvc_Drop Down Menu - Fatal编程技术网

C# ASP.NET MVC dropdownlist值不反映模型的值

C# ASP.NET MVC dropdownlist值不反映模型的值,c#,asp.net-mvc,drop-down-menu,C#,Asp.net Mvc,Drop Down Menu,我有一个页面,允许我根据不同的预先定义的类别添加有趣的地点POI: 模型 创造 控制器 因此,当我创建一个新的POI时,我得到以下POI状态: TitleEng和TitleNor=null。因此,如果我将添加一个新的POI对象,那么Category对象(仅具有Id)也将被添加 所以类别并没有映射为属性,只有它的ID字段是。 据我所知,其中一个解决方案是更改POI模型,而不是只使用CategoryID的属性类别。但是,如果我不想更改模型,如何获得正确的映射呢?提前感谢。在回邮时,您只会收到发送给

我有一个页面,允许我根据不同的预先定义的类别添加有趣的地点POI:

模型 创造 控制器 因此,当我创建一个新的POI时,我得到以下POI状态:

TitleEng和TitleNor=null。因此,如果我将添加一个新的POI对象,那么Category对象(仅具有Id)也将被添加

所以类别并没有映射为属性,只有它的ID字段是。
据我所知,其中一个解决方案是更改POI模型,而不是只使用CategoryID的属性类别。但是,如果我不想更改模型,如何获得正确的映射呢?提前感谢。

在回邮时,您只会收到发送给控制器的值。您只发送Category.Id。但您没有Category.TitleNor和Category.TitleEng的输入,因此它们将为空

您不能将@Html.DropDownListFormodel=>model.Category、ViewBag.Categories用作SelectList。。。因为类别是一个复杂的对象,控件只回发一个值


理想情况下,您应该使用包含属性public int CategoryID{get;set;}的视图模型来绑定下拉列表。

您的类别是否包含与模型相同的列名?@krishnajrana如果您指的是TitleNor和TitleEng,那么是的。类别和POI都具有这样的属性。映射可能有问题吗?是的,我想,请检查拼写错误,如果拼写正确,然后在categoryQry linq查询中指定列名。您的意思是这是在回发时发生的吗?您不能使用model=>model.Category,因为model.Category是一个复杂的对象。控件只回发一个值。如果需要完全填充类别,则必须从数据库中再次获取。
public class POI
{
    public long Id { get; set; }
    public string TitleNor { get; set; }
    public string TitleEng { get; set; }
    public Category Category { get; set; }
    public string DescriptionNor { get; set; }
    public string DescriptionEng { get; set; }
    public float Latitude { get; set; }
    public float Longitude { get; set; }
    public string ImagePath { get; set; }
    public HttpPostedFileBase UploadedPhoto { get; set; }
}

public class Category
{  
    public int Id { get; set; }
    public string TitleNor { get; set; }
    public string TitleEng { get; set; }
}
@Html.DropDownListFor(model=>model.Category.Id, ViewBag.Categories as SelectList, "", new { @class = "form-control" })
List<Category> categories = new List<Category>();
        var categoryQry = from d in db.Categories
                          select d;
        categories.AddRange(categoryQry.Distinct());
        ViewBag.Categories = new SelectList(categories, "Id", "TitleNor");
        return View(pOI);