ASP.NET MVC의 LinkButton
-
22-08-2019 - |
문제
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")