2014-05-12 120 views
0

我在我的mvc頁面上有局部視圖。該視圖默認情況下呈現無數據,但會根據頁面另一部分中的組合框中的值選擇進行更新。部分視圖將id用作參數,用於獲取返回模型所需的數據。Ext.Net MVC - 使用參數渲染局部視圖

我遇到的問題是,在初始加載時,參數爲空,因爲沒有選擇任何東西,我得到一個空值異常。 有沒有一種方法可以在直接事件調用中使用if語句來檢查所選項目並返回0是否爲空?

查看下面的示例代碼以進行說明。

感謝

這裏是我的主網頁(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; 
     } 

這個作品,如果我硬編碼一個參數值,但如果我現在嘗試它,則不會。這裏是我的錯誤 -

消息=無法執行運行時對空引用

所以我在想,我可以在格蘭DirectEvents一塊,如果做一個檢查空在組合框中選擇綁定,我可以在必要時注入0,並在控制器中處理。這可以做到嗎?

+0

沒有任何理由不使用'動@ Html.Action'代替'@ Html.Partial'? '@ H​​tml.Partial'用於直接引用視圖而無需執行任何操作。 – tweray

+0

沒有理由 - 我可以改變它。但是,我仍然遇到同樣的問題。 – czuroski

+0

抱歉,我對您要求的內容感到困惑。我想現在我明白了。看看[這個](http://stackoverflow.com/questions/21043153/ext-net-accessing-combobox-value-at-server-directevent)可以幫助你 – tweray

回答

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>) 
      ) 
     ) 
+0

這是門票 - 感謝您的幫助! – czuroski