我在mvc页面上有部分视图。视图默认呈现时没有数据,但会根据页面另一部分组合框中的值选择进行更新。局部视图将id作为参数,它将用于获取返回模型所需的数据。
我遇到的问题是,在初始加载时,参数为null,因为没有选择任何内容,我得到一个空值异常。 有没有办法可以在直接事件调用中使用if语句来检查所选项并返回0是否为null?
请参阅下面的示例代码以获得说明。
由于
以下是我的主页(index.cshtml)的相关部分 -
x.ComboBox()
.ID("MyCombo")
.DisplayField("Title")
.ValueField("Number")
.TypeAhead(false)
.Width(500)
.PageSize(10)
.HideBaseTrigger(true)
.MinChars(0)
.TriggerAction(TriggerAction.Query)
.DirectEvents(de =>
{
de.Select.Url = Url.Action("MyPartial");
@* Can I use an if statment here to check the selected item's value? *@
de.Select.ExtraParams.Add(new { id = App.MyCombo.getValue() });
})
.ListConfig(Html.X().BoundList()
.LoadingText("Searching...")
.ItemTpl(Html.X().XTemplate()
.Html(@<text>
<div class="search-item">
<h3><span>{Number}</span>{Title}</h3>
{Description}
</div>
</text>)
)
)
........
@Html.Partial("MyPartial", Model.MyPartialVM)
这是我的控制器代码 -
public ActionResult MyPartial(string id)
{
var vm = new MyPartialViewModel
{
Number = id,
Title = "New Title"
};
ViewData.Model = vm;
var pvr = new Ext.Net.MVC.PartialViewResult
{
ViewData = this.ViewData
};
return pvr;
}
如果我硬编码参数值,这是有效的,但如果我现在尝试它,则不行。这是我得到的错误 -
Message =无法对空引用执行运行时绑定
所以我想我可以在一个DirectEvents片段中检查组合框选择是否为null,我可以在必要时注入0并在控制器中处理它。可以这样做吗?
答案 0 :(得分:1)
尝试这是否有效:
x.ComboBox()
.ID("MyCombo")
.DisplayField("Title")
.ValueField("Number")
.TypeAhead(false)
.Width(500)
.PageSize(10)
.HideBaseTrigger(true)
.MinChars(0)
.TriggerAction(TriggerAction.Query)
.DirectEvents(de =>
{
de.Select.Url = Url.Action("MyPartial");
de.Select.ExtraParams.Add(new {
Name = "id",
Value ="App.MyCombo.getValue() == null ? '0' : App.MyCombo.getValue()",
Mode = ParameterMode.Raw
});
})
.ListConfig(Html.X().BoundList()
.LoadingText("Searching...")
.ItemTpl(Html.X().XTemplate()
.Html(@<text>
<div class="search-item">
<h3><span>{Number}</span>{Title}</h3>
{Description}
</div>
</text>)
)
)