在開發Asp.Net Mvc Web專案時,有時需要一些不顯示參數跟著form get,大部分使用 Hidden input處理
而這些參數空值時怎樣不傳遞到後端,讓URL不會一堆空值參數
繼續翻寫專案大業中
需要處理一些特殊的form get傳遞參數的處理
有一些參數在空值時不需要跟著form一起傳遞,當然這參數也是不顯示在畫面中參數
這些參數是在進入頁面時就已經決定了,當然可以用前端的解法但是要寫一堆判斷
所以使用MVC中有的helper來當解決方案,當然也許有更好的解法觀迎指教
public static IHtmlString HiddenNullNotGen(this HtmlHelper helper, string name, string value)
{
if (string.IsNullOrWhiteSpace(value))
{
return new MvcHtmlString(null);
}
return helper.Hidden(name, value);
}
額外補充一下 不想到處都要參考擴充的helper的話,可以在View中的Web.config增加參考這樣在野面上就可以直接使用
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="XXXXX.Helpers" />
</namespaces>
</pages>
</system.web.webPages.razor>
上方範例中的XXXXX.Helpers,XXXX是專案名,Helpers是自訂擴充Helper的資料夾
接著在頁面上怎樣使用呢
@using (Html.BeginForm("Action", "Controller", FormMethod.Get))
{
<div>
<div>
<input id="aaa" name="aaa" type="text" value="">
</div>
<div>
<button type="submit">Search</button>
</div>
</div>
@Html.HiddenNullNotGen("xxx", Model.xxx)
}
當有傳遞對應的參數時,隱藏的input才會產生在畫面上,不會出現一堆參數明明都沒有卻一狗票都在上面,url會相對的乾淨許多
謝謝收看!