문제

ASP LinkButtons를 ASP.NET MVC보기 페이지에 인스턴스화해야합니다. 나는 몇 가지를 시도했고, 나는 그것들을 제대로 나오게 할 수 없다. HERES 내 코드의 가장 최근 화신 : 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 : LinkButton 태그에 runat = "Server"attribuite를 추가하려고 시도했지만 런타임 예외가 발생합니다. runat = "Server"속성으로 컨트롤을 양식 태그에만 넣을 수있는 런타임 예외가 나타납니다. 내가 이미했다고 생각하기 때문에 정말 이해하지 못합니다. 누구든지 내가 잘못하고있는 일을 설명 할 수 있고 링크 부트 톤이 실제로 링크되어 있도록 수정하기 위해 무엇을해야합니까?

도움이 되었습니까?

해결책

ASP.NET MVC를 사용하면 사용해야합니다 Html.ActionLink(...) 도우미 방법 (등). 그들은 LinkButtons보다 훨씬 풍부한 기능을 제공합니다.

다른 팁

내 생각에 LinkButton을 사용하여이를 사용하여 양식을 제출하고 싶습니까? 이 경우, 나는 비슷한 일을했으며 다음과 같은 것입니다.

<% 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();
    });
}); 

불행히도 ASP.NET MVC는 현재 웹 양식 컨트롤을 지원하지 않습니다. 죄송합니다! :(

표준 HTML 링크를 사용해야합니다.

나는 다소 원유 확장 방법을 썼습니다. 이것에 대해 자유롭게 개선하십시오 (내가 필요한 전부입니다) :

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")
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top