Ext.Net MVC - 使用参数渲染局部视图

时间:2014-05-12 14:33:14

标签: asp.net-mvc partial-views ext.net

我在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并在控制器中处理它。可以这样做吗?

1 个答案:

答案 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>)
            )
        )