2009-05-18 65 views
10

我需要將一些ASP LinkBut​​ton實例化到ASP.NET MVC視圖頁面上。我嘗試了一些東西,我無法讓他們出來正確。我的繼承人代碼的最新化身: ASPX文件ASP.NET MVC中的LinkBut​​ton

<body> 
<% using (Html.BeginForm("TitleDetail", "Movies", FormMethod.Post, new{runat="server"})) { %> 

    <ul> 
    <% foreach (var disc in Model.Title.tblDiscs) %> 
    <% { %> 

     <li> 
      <asp:LinkButton ID="Play">Link</asp:LinkButton> 
     </li> 
    <% } %> 
    </ul> 
<% } %> 
</body> 

它呈現在Firefox什麼是我列舉的集合中的每個成員的文本鏈接的一個實例,但他們arent超鏈接,只是文字。 生成的HTML看起來像這樣

<form action="/MyMovies/TitleDetail/239" method="post" runat="server">test title <br /> 

    <ul> 
     <li> 

      <asp:LinkButton ID="Play">Link</asp:LinkButton> 
     </li> 

     <li> 
      <asp:LinkButton ID="Play">Link</asp:LinkButton> 
     </li> 

     <li> 
      <asp:LinkButton ID="Play">Link</asp:LinkButton> 

     </li> 

    </ul> 

我試着加入中用runat =「服務器」 attribuite到每個ASP:LinkBut​​ton的標籤,但我得到控制,只能把裏面運行時異常具有runat =「server」屬性的表單標記。我認爲我已經完成了,所以我沒有真正理解這一點。任何人都可以向我解釋我做錯了什麼,以及我需要做什麼來解決它,以便LinkBut​​ton實際上是鏈接?

回答

7

在ASP.NET MVC,你應該使用Html.ActionLink(...)輔助方法(等),它們提供比了LinkBut​​ton更豐富的功能。

2

不幸的是,ASP.NET MVC現在不支持Web窗體控件。抱歉! :(

你必須使用一個標準的HTML鏈接。

+12

我認爲這的確是個好東西(TM)。 :) – BobbyShaftoe 2009-05-18 22:21:11

15

我的猜測是,你要使用的LinkBut​​ton用它來提交表單,如果是這樣的話,我已經做了類似的東西,它是這樣的:?

<% using (Html.BeginForm("TitleDetail", "Movies", 
    FormMethod.Post, new{ id = "MyForm", name = "MyForm" })) { %>  
<ul> 
    <% foreach (var disc in Model.Title.tblDiscs) { %> 
     <li> 
      <a class="do-something-link" href="javascript:void(0);">Click</a> 
     </li> 
    <% } %> 
</ul> 
<% } %> 

然後處理通過jQuery提交:

$(document).ready(function(){ 
    $("a.do-something-link").click(function(ev) { 
     ev.preventDefault(); 
     $("#MyForm").submit(); 
    }); 
}); 
2

我寫了一個粗略的擴展方法。隨意提高對這個(這是我所需要的):

public static IHtmlString ActionButton(this UrlHelper urlHelper, string buttonText, 
    string actionName) 
{ 
    var html = string.Format("<input type=\"button\" value=\"{0}\" " + 
     "onclick=\"window.location = '{1}'\"/>", 
     buttonText, urlHelper.Action(actionName)); 

    return new HtmlString(html); 
} 

並在視圖,這樣稱呼它:

@Url.ActionButton("Button Text", "ActionMethod")