2015-02-07 55 views
0

我有這樣的看法:如何管理get-query參數?

@model MvcA.Models.SellsLiveSearch 
@using (Html.BeginForm("Search","Search",FormMethod.Get)) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend> parametrs</legend> 
     <select id="HowManyRoom" name="HowManyRoom"><option></option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5>">4</option> 
     </select> 

     <select id="TimeRange" name="TimeRange"><option></option> 
     <option>s</option> 
     <option>ss</option> 
     <option>sss</option> 
     <option>ssss</option> 
     </select> 



     <input type="checkbox" name="TypeHome" value="1" /> 
     <input type="checkbox" name="TypeHome" value="2" /> 
     <input type="checkbox" name="TypeHome" value="3" /> 
     <input type="checkbox" name="TypeHome" value="4" /> 


     <p> 
      <input type="submit" value="Search" /> 
     </p> 
    </fieldset> 
} 

如何做到這一點的,而不是在GET請求空參數

(例如:搜索HowManyRoom = & TIMERANGE = & TypeHome = 1)

只通過了指定的 (例如:搜索?TypeHome = 1)

編輯:

[HttpGet] 
     public ActionResult Search(SellsLiveSearch Dol) 
     { return View(); } 

這就是我寫的

+0

你需要顯示在控制器方法簽名。 – 2015-02-07 22:58:39

+0

@Stephen Muecke,我加...我剛開始寫。我可以更正控制器的形狀並在必要時查看 – forven 2015-02-08 10:07:25

回答

0

你的表格將寄回所有的HTML表單元素。刪除它們的唯一方法是使用javascript發佈表單,並只發布您想要的元素。

您可以使用jQuery刪除空HTML文本內容是這樣的:

$(document).ready(function() { 
    $('#Search').submit(function(event) { 
    event.preventDefault(); 

    $('#Search select').each(function() { 
     $(this).val() == "" ? $(this).remove() : null; 
    }); 

    $(this).trigger('submit'); 
    }); 
}) 
0

如果不從形式提供給他們,性能將有自己的類型的默認值,無論如何,不​​管你將它們包含在查詢字符串中或不。

讓你的模型參數可爲空:

public class SellsLiveSearch 
{ 
    public int? HowManyRooms { get; set; } 
    public int? TimeRange { get; set; } 
    public int? TypeHome { get; set; } 
} 

然後在你的控制器,驗證它們設置:

public ActionResult Search(SellsLiveSearch model) 
{ 
    if (model.HowManyRooms.HasValue) 
    { 
     // ... 
    } 
}