10

我需要将一些 ASP LinkBut​​tons 实例化到 ASP.NET MVC 视图页面上。我已经尝试了一些事情,但我无法让它们正确出现。这是我最近的代码化身:aspx 文件

<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 中呈现的是我正在枚举的集合中每个成员的文本链接的一个实例,但它们不是超链接,只是文本。生成的 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>

我尝试向每个 asp:LinkBut​​ton 标记添加一个 runat="server" 属性,但我得到一个运行时异常,即控件只能放在具有 runat="server" 属性的表单标记内。我想我已经做过了,所以我不太明白。谁能向我解释我做错了什么,以及我需要做些什么来修复它,以便 LinkBut​​tons 实际上是链接的?

4

4 回答 4

14

我的猜测是您想使用 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();
    });
}); 
于 2009-05-19T19:45:23.237 回答
7

使用 ASP.NET MVC,您应该使用Html.ActionLink(...)辅助方法(等等)。它们提供比 LinkBut​​tons 更丰富的功能。

于 2009-05-18T22:23:23.543 回答
2

不幸的是,ASP.NET MVC 目前不支持 Web 表单控件。对不起!:(

您必须使用标准的 HTML 链接。

于 2009-05-18T22:20:30.680 回答
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")
于 2013-06-14T18:42:45.063 回答