gpt4 book ai didi

c# - EditorTemplate 中的 MVC 字典

转载 作者:行者123 更新时间:2023-11-30 20:39:21 25 4
gpt4 key购买 nike

我不想将字典绑定(bind)到 View 。但模型似乎是空的。棘手的部分是我在另一个 View 中使用一个 View ,我无法弄清楚我的错误在哪里。

到目前为止,这是我的代码:

第一个模型:

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 的 View

@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 的 View

@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>

问题是,我无法将我的字典绑定(bind)到 Html.DropDownList,因为模型为 Null。我是 ASP.Net MVC 的新手,问题本身看起来很简单,但我找不到错误的原因。所以我的问题是为什么我的 Model 等于 Null ?

顺便说一句, Controller 非常小,但为了完整起见,它来了

public class NewItemDeliveryController : Controller
{
// GET: NewItemDelivery
public ActionResult Index()
{
return View("NewItemDelivery");
}
}

最佳答案

在这里您需要将您的模型传递到您的 View 中,如下所示:

// GET: NewItemDelivery
public ActionResult Index()
{
var myModel = new NewItemDeliveryModel();
return View("NewItemDelivery", myModel);
}

旁注:从 MVC 6 开始,您将能够直接向 View 注入(inject)依赖性。

更多信息请看这里:https://neelbhatt40.wordpress.com/2015/08/14/inject-new-directive-of-mvc/

关于c# - EditorTemplate 中的 MVC 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34417193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com