問題是每當我在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 });
}
}
有兩個問題,首先你定義了什麼路線?其次,這個代碼在哪個頁面上?我們正在查看/ Home/Edit頁面中的代碼嗎?最終,答案是圍繞着ASP.NET MVC能夠根據您的參數來解釋路線。 – 2011-05-31 01:26:26
@GlennFerrieLive,我添加了更多細節。我的網址基本上是http://www.mysite.com/Contact,其中聯繫人是在URL中傳遞的名稱參數值。 – Pirzada 2011-05-31 01:32:08
我認爲這個問題是你的第三條路線,即「空路線」。如果你瞭解MVC路由如何工作,那麼它就不必要了。名爲「RootUrlWithAction」的路由處理空路由場景,因爲您標識爲路由參數的值實際上是缺省值。新 { 控制器= 「家」, 行動= 「指數」, NAME = 「家」, ID = UrlParameter.Optional } 我覺得 「空」 的路線實際上是與 「routeUrlWithAction」 衝突路線 – 2011-05-31 01:46:39