我不想将词典绑定到视图。但该模型似乎是空的。 棘手的部分是我在另一个视图中使用视图,我无法弄清楚我的错误在哪里。
到目前为止,这是我的代码:
第一个模型:
public class QuantityAndSize
{
private Dictionary<String, int> m_Size;
public decimal Quantity {get;set;}
public Dictionary<string,int> Size
{
get
{
return m_Size;
}
set
{
m_Size = value;
}
}
public int SelectedItem {get;set;}
public QuantityAndSize()
{
Quantity = 0;
m_Size = new Dictionary<string, int>();
SelectedItem = 0;
}
}
第二个模型
public class NewItemDeliveryModel
{
#region - member -
private string m_Subject;
private QuantityAndSize m_ShortfallQuantity;
#endregion
#region - properties
[Display(Name = "Betreff")]
public string Subject
{
get { return m_Subject; }
set { m_Subject = value; }
}
[Display(Name = "Fehlmenge")]
public QuantityAndSize ShortfallQuantity
{
get { return m_ShortfallQuantity; }
set { m_ShortfallQuantity = value; }
}
#endregion
#region - ctor -
public NewItemDeliveryModel()
{
m_ShortfallQuantity = new QuantityAndSize();
}
#endregion
}
这里我有一个NewItemDeliveryModel的视图
@model Web.Models.NewItemDeliveryModel
@{
ViewBag.Title = "NewItemDelivery";
}
<h2>NewItemDelivery</h2>
@using (Html.BeginForm())
{
<div class="form-horizontal">
<div class="form-group">
@Html.LabelFor(model => model.Subject, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Subject)
@Html.ValidationMessageFor(model => model.Subject)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.ShortfallQuantity, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ShortfallQuantity)
@Html.ValidationMessageFor(model => model.ShortfallQuantity)
</div>
</div>
</div>
}
和QuantityAndSize的视图
@model Web.Models.Structures.QuantityAndSize
<div class="form-group">
@Html.LabelFor(model => model.Quantity, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Quantity)
@Html.ValidationMessageFor(model => model.Quantity)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Size, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Size, new SelectList(Model.Size,"Key","Value"), "Sizes") //<-- Model.Size says that Model is null but i can't figure out why
@Html.ValidationMessageFor(model => model.Size)
</div>
</div>
问题是,我无法将我的Dictionary绑定到Html.DropDownList,因为Model是Null。 我是ASP.Net MVC的新手,问题本身似乎很简单,但我无法找到错误的原因。 所以我的问题是为什么我的模型等于Null?
BTW控制器非常小,但为了完整起见,它来了
public class NewItemDeliveryController : Controller
{
// GET: NewItemDelivery
public ActionResult Index()
{
return View("NewItemDelivery");
}
}
答案 0 :(得分:3)
在这里,您需要将模型传递到视图中,如下所示:
// GET: NewItemDelivery
public ActionResult Index()
{
var myModel = new NewItemDeliveryModel();
return View("NewItemDelivery", myModel);
}
侧注:从MVC 6开始,您可以直接为视图注入依赖。
请点击此处了解详情:https://neelbhatt40.wordpress.com/2015/08/14/inject-new-directive-of-mvc/
答案 1 :(得分:1)
尝试将模型传递给您的视图。
public class NewItemDeliveryController : Controller
{
// GET: NewItemDelivery
public ActionResult Index()
{
var model = new NewItemDeliveryModel(){*Set your Dictionnary here*};
return View("NewItemDelivery",model);
}
}