2012-12-06 42 views
1
@Html.ActionLink("pSearch", "Results", null, new {target="_blank"}) 

不起作用,因爲它不會將表單數據發佈到「結果」控制器操作,並且返回的所有內容都是404錯誤。在MVC中發佈表單時,如何讓控制器打開一個包含結果的新窗口?

回答

2

假設你正在使用的默認路由:

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

則:

@Html.ActionLink("pSearch", "Results", null, new { target="_blank" }) 

將產生:

<a href="/Home/Results" target="_blank">pSearch</a> 

所以,如果你希望得到任何東西比404希望你已在HomeController內定義了Results動作,對嗎?

像這樣:

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

否則,你真的不能指望超過404錯誤得多了,可以嗎?

很明顯,但可能值得一提的是,此操作預計會定義~/Views/Home/Results.cshtml~/Views/Home/Results.aspx視圖。你已經在這個位置定義了它,不是嗎?

+0

我加了onclick =「this.form.target ='_blank'; return真正;」到提交按鈕,一切都很好。我讓它變得複雜得多,然後我真的需要這樣做。 (忘了我的基本HTML) –

+1

是的,不要忘記基本的HTML。請記住,ASP.NET MVC所做的一切都是在一天結束時吐出一些客戶端瀏覽器使用的HTML字節。所以不要用ASP.NET MVC來思考。根據瀏覽器在一天結束時看到的內容來思考。 –

+0

感謝您的幫助 –

相關問題