2011-05-31 60 views
0

問題是每當我在BeginForm中對Action和Controller進行硬編碼時,它會產生一個空行爲方法。BeginForm渲染一個空行爲方法

我很困惑。

下面的視圖已從HomeController和Index操作方法調用。

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { id = "first" })) 
{} 

結果

<form id="first" method="post" action="/Home"></form> 

下面視圖已從的HomeController和頁面動作方法調用。

@using (Html.BeginForm("Edit", "Home", FormMethod.Post, new { id = "first" })) 
{} 

結果

<form id="first" method="post" action=""></form> 

路由

routes.MapRoute(
     "RootUrlWithAction", 
     "Home", 
     new 
      { 
       controller = "Home", 
       action = "Index", 
       name = "home", 
       id = UrlParameter.Optional 
      } 
    ); 

    routes.MapRoute(
     "DynamicPages", 
     "{name}/{id}", 
     new 
      { 
       controller = "Home", 
       action = "Page", 
       id = UrlParameter.Optional 
      } 
    ); 

    routes.MapRoute(
     "EmptyUrl", 
     "", 
     new 
      { 
       controller = "Home", 
       action = "Index", 
       name = "home" 
      } 
    ); 

    routes.MapRoute(
     "Default", 
     "{controller}/{action}/{name}/{id}", 
     new 
     { 
      controller = "Home", 
      action = "Index", 
      name = UrlParameter.Optional, 
      id = UrlParameter.Optional 
     } 
    ); 

控制器操作

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Page(String name) 
    { 

     return View(); 
    } 

    [HttpPost] 
    public ActionResult Edit(Order orderVm) 
    { 
     var a = orderVm; 
     string errorMessage = "hehehe"; 

     return Json(new Order { Message = errorMessage }); 
    } 
} 
+0

有兩個問題,首先你定義了什麼路線?其次,這個代碼在哪個頁面上?我們正在查看/ Home/Edit頁面中的代碼嗎?最終,答案是圍繞着ASP.NET MVC能夠根據您的參數來解釋路線。 – 2011-05-31 01:26:26

+0

@GlennFerrieLive,我添加了更多細節。我的網址基本上是http://www.mysite.com/Contact,其中聯繫人是在URL中傳遞的名稱參數值。 – Pirzada 2011-05-31 01:32:08

+0

我認爲這個問題是你的第三條路線,即「空路線」。如果你瞭解MVC路由如何工作,那麼它就不必要了。名爲「RootUrlWithAction」的路由處理空路由場景,因爲您標識爲路由參數的值實際上是缺省值。新 { 控制器= 「家」, 行動= 「指數」, NAME = 「家」, ID = UrlParameter.Optional } 我覺得 「空」 的路線實際上是與 「routeUrlWithAction」 衝突路線 – 2011-05-31 01:46:39

回答

1

你應該嘗試使用這個工具,你可以來回下載調試你的路線m NuGet。

http://haacked.com/archive/2011/04/13/routedebugger-2.aspx

PM>安裝,包裝RouteDebugger

讓我知道它是如何爲你的作品。

+0

我已經得到了。正如你所說的,問題出在我的路線上,我會更深入地挖掘它。我接受你的答案。如果你有一些時間請看看我在這裏的其他帖子http://stackoverflow.com/questions/6180207/displaytemplate-code-need-fix-feedback – Pirzada 2011-05-31 03:07:21

+0

會做。我喜歡挑戰 – 2011-05-31 23:41:04