2012-12-23 51 views
0

使用ASP.NET MVC,我想調用控制器的按鈕在JQuery上的動作。如何調用按鈕的動作點擊從JQuery

控制器:

public class HomeController : Controller 
    { 
     // 
     // GET: /Home/ 

     public ActionResult Index() 
     { 

      return View(); 
     } 
     public ActionResult PersonInfo(string name, string city) 
     { 
      // other code for assign ViewData 
      return View(); 
     } 
    } 

我有兩個文本框,在Index.chtml頁面一個按鈕。我想要顯示Url,如'http://localhost:2526/PersonName'。對於城市我想要可選的參數並且不想在Url中。所以,我映射如下路線:

routes.MapRoute(
       "Default", // Route name 
       "", 
       new { controller = "Home", action = "Index" } // Parameter defaults 
      ); 

routes.MapRoute(
      "PersonInfo", // Route name 
      "{name}", // URL with parameters 
      new { controller = "Home", action = "PersonInfo", name= "" , city = ""} // Parameter defaults 

從瀏覽器,如果我輸入網址,如「http://localhot:2526/John」然後PersonInfo視圖顯示成功。

我訪問link相關我的問題。但我也想傳遞參數。

任何人都可以幫我我怎樣才能調用按鈕點擊從JQuery的行動。

回答

0

你可以傳遞參數作爲查詢字符串,例如:

$('#buttonId').click(function(){ 
    document.location = 
    '@Url.Action("MyAction","MyController")'+'?'+'parameterToSend = @value'; 
}); 

您的鏈接就會像

MyController/MyAction?parameterToSend=value 
+0

我試着用你的解決方案,但在我的情況下,它給了我'localhost:2526 /?name = John'在瀏覽器和頁面不重定向到personInfo視圖。請看我的路線圖(第二個)。我想傳遞兩個參數,並且只需要一個參數在路徑路徑中顯示。 –

+0

它不適合使用映射來顯示只有一個參數,它更好地發佈您的參數使用窗體並顯示您想要在查詢字符串中的參數,換句話說,您可以將您的窗體發佈到MyController/MyAction?parameterToSend = value – 1AmirJalali

+0

你能爲我提供案例嗎?我應該在路線圖和JQuery呼叫中採取哪些行動? –

0

您要添加內部Url.Action法PARAMATERS避免了/在主持人的結束。

@ Url.Action( 「PersonInfo」, 「家」,新{名= Model.Name,城市= Model.City}) //我相信這會看你的路由和本地主機產生:2526 /約翰·/JohnsCity

您的參數是您模型的一部分嗎?如果是這樣,上述將起作用。如果不是,您可以使用1AmirJalali答案,但在添加參數之前替換/,因爲如果參數不屬於您的模型的一部分,那麼它們可能是通過javascript變量傳入的。

+0

我需要像localhost:2526/John這樣的URL路徑。我想通過城市作爲額外的參數。不想在URL中使用城市。請參閱我的問題中的Routes.MapRoute PersonInfo操作。如果我只傳遞名稱參數,那麼它的工作是完美的。但我通過名稱參數傳遞城市參數然後Url.Action返回空白字符串。所以,當前頁面(Index.chtml)沒有重定向到PersonInfo.chtml。 –

+0

將路線更改爲{name}/{city}並將city =「」更改爲city = UrlParameter.Optional時,也可以在實際控制器或操作添加新路線時確保將這些路線放在變量路線之前,以便它們被呼叫。 –

+0

是的,我可以通過改變路線來實現,但無論如何都不會改變我的路線(因爲我不希望URL中的城市)?我不想讓像localhost這樣的路徑:2526/John/JohnsCity。只想讓localhost:2526/John。如果用戶沒有輸入城市名稱,則會顯示所有約翰人。如果用戶輸入城市名稱,則localhost:2526/John將顯示具有城市等於在城市文本框中輸入的值的John personInfo。 –