2014-01-30 37 views
0

我有一個MVC ActionLink的設置ViewBag現場

@Html.ActionLink("Search text", "Search", new { q="searchtext1" }); 

是去後面:

http://website2312143.com/search/searchtext1

,我想在幕後設置實際搜索文本是"searchtext2"所以我「M試圖通過此值以Search動作,但仍顯示http://website2312143.com/search/searchtext1給用戶。

Search操作中,我試圖從ViewBag或其他任何機制中獲取「searchtext2」並顯示數據。

之所以實際值是從URL參數不同的是,因爲WCF web服務,但未通過控制器進行調用需要一個稍微不同的參數來正確顯示數據。

反正是有傳遞隱藏的價值使用@Html.ActionLink在幕後,並沒有用戶干預任何區別不同的動作獲得價值?

+0

你想使用類似「Q = viewbag.something」? – MustafaP

+0

如果我這樣做,用戶將看到URL爲/ search/searchtext2。我仍然想向用戶顯示/搜索/ searchtext1,並將「searchtext2」傳遞到場景後面的目標動作。 – iefpw

+0

http://stackoverflow.com/questions/15444749/how-to-post-data-to-external-site-and-get-external-sites-action-result-from-my我希望這個鏈接會幫助你。 – MustafaP

回答

1

你必須這樣做,以稍微不同的方式 -

<script src="~/Scripts/jquery-1.10.2.min.js"></script> 
<script> 
    $(function() { 
     $('#me').click(function (e) { 
      e.preventDefault(); 
      $(this).parents('form').first().submit(); 
     }); 
    }); 
</script> 
@using (Html.BeginForm("Search", "Search", new { q = "searchtext1" }, FormMethod.Post)) 
{ 
    @Html.Hidden("OriginalSearchText", "SearchStringOriginal"); 
    @Html.ActionLink("Search text", "Search", null, new { id = "me" }); 
} 

輸出 -

enter image description here

和Q,你可以得到的查詢字符串。

1

不直接,因爲ActionLink僅會生成一個URL(一GET)。

您可以創建一個表格,其中action設置爲ActionLink url(您也可以使用@Url.Action("Search text", "Search", new { q="searchtext1" })),然後設置<input type='hidden' value='searchtext2' />。這會給你你想要的URL,並傳遞一個隱藏的變量。

@using (Html.BeginForm("Search text", "Search", new { q = "searchtext1" }) 
{ 
    @Html.Hidden("searchtext2", "second search text") 
    <input type="submit" value="Search!" class="override so i don't look like a button" /> 
}