2013-06-03 50 views
-1

快速的新手問題。我不知道爲什麼我的Html.ActionLink這相當於這「查看源文件」Html.ActionLink沒有形成我想要的格式的鏈接

<a href="/Customer/CustomerSave?custid=1104">Save</a> 

我的HTML幫助是這樣的:

<%: Html.ActionLink("Save", "CustomerSave","Customer",new {custid = 101 })%> 

我得到一個「未找到資源」嘗試訪問我的控制器時出錯:

[HttpPost] 
public ActionResult CustomerSave(int custid) 
{ 
........ 
} 

顯然,錨點結構不正確。我已閱讀其他帖子並嘗試其他選項,但我不完全瞭解發生了什麼。我所要做的就是在我的客戶控制器中執行操作(「CustomerSave」)。

我在做什麼錯?

+0

你不是張貼到服務器的信息,以節省您的客戶?數據來自哪裏? –

回答

3

將您的CustomerSave更改爲HTTPGet或刪除HTTPPost。

[HttpPost] //<-- Here 
public ActionResult CustomerSave(int custid) 
{ 
........ 
} 

你是因爲ActionLink的是要爲HTTPGET,而你的動作有HTTPPost上標註屬性得到錯誤。如果你想讓它成爲一個帖子,你可以嘗試通過單擊鏈接向你的操作發出Ajax POST請求。默認操作URl鏈接點擊將執行GET請求。

嘗試這種方式

 @Ajax.ActionLink("Save", 
      "CustomerSave", 
      "Customer", 
      new {custid = 101 }, 
      new AjaxOptions { 
       HttpMethod = "POST", 
       OnSuccess = "saveCustomer" 
     }) ; 

和JS

function saveCustomer(response, status, data) { 

     // Here you get any response 
    } 

,或者你可以在customerSave鏈接的點擊處理程序與普通Jquery Ajax POST去。

+0

我想將數據發佈到我的操作中以插入新的客戶數據。我有一個如下所示的鏈接示例:<%:Html.ActionLink(「Add」,「CarCreate」,「Car」,new {id = Model.custId},new object {})%>生成Add 。這將數據發佈到使用HttpPost的控制器操作。 – user2284341

+0

您可以在這種情況下使用Ajax Post – PSL

+0

您的數據在哪裏發佈?這是在表單內嗎? – PSL

0

在你的Global.asax.cs文件中的RegisterRoutes方法應該是這樣的:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Customer", action = "CustomerSave", custid = UrlParameter.Optional } 
     ); 
     } 

和您的控制器方法應該具有相同的參數客戶ID。

0

Html.ActionLink創建一個錨標籤,這些只是GET。

嘗試使用Ajax.ActionLink:

<%: Ajax.ActionLink("Save", "CustomerSave","Customer",new {custid = 101 }, new AjaxOptions{ HttpMethod="Post"})%>