HTML 버튼을 ActionLink로 변환
-
12-09-2019 - |
문제
HTML 버튼 설정이 있고 대신 텍스트 기반 링크로 변환하고 싶은 일련의 필수 속성으로 작동하고 있습니다.또한 작업 HTML 도우미 및 intellesense에 익숙해질 수 있도록 이러한 속성을 ActionLink에 연결하는 방법을 알고 싶습니다.
<input type="button" id="RemoveRegistration_Submit<%=row.ID %>"
value="Remove From Cart"
onclick="$('#Step2_RemoveRegistrationForm input[name=id]').val('<%=row.ID %>'); $('#Step2_RemoveRegistrationForm').submit();"
align="right" />
고마워
해결책
그다지 어렵지는 않습니다. 하지만 ActionLink는 경로 테이블에서 링크를 생성해야 한다는 뜻이므로 Html.Link를 의미한다고 생각합니다.
<%= Html.Link("Remove from Cart", "#", new {onclick = "#Step2_RemoveRegistrationForm input[name=id]').val('<%=row.ID %>'); $('#Step2_RemoveRegistrationForm').submit();"}) %>
- 매개변수#1:링크텍스트
- 매개변수#2:href
매개변수#3:html속성
공개 정적 문자열 링크 (이 htmlhelper htmlhelper, String linktext, String href, 객체 htmlattributes) {
TagBuilder tagBuilder = new TagBuilder("a"){ InnerHtml = linkText;}
tagBuilder.MergeAttributes(htmlAttributes);
tagBuilder.MergeAttributes("href", href);
return tagBuilder.ToString(TagRenderMode.Normal);
}
확장 방법을 사용하려면 뷰에서 <%@ Import Namespace="xxxxxx" %>하는 것을 잊지 마세요.
다른 팁
버튼은 JavaScript없이 링크처럼 작동 할 수 없습니다.
일반적으로 - 그것은 나쁜 연습입니다 (검색 엔진은 페이지를 올바르게 색인화 할 수 없습니다).
앵커 태그를 사용하여 버튼처럼 보이게하는 것이 좋습니다.
그러나 진정으로 필요하다면 - 이것 기사는 답을 제공합니다.
편집하다:
죄송합니다. 내 대답을 너무 빨리 촬영했습니다.
이것은 정확히 당신이 요구하는 것이 아닙니다 (htmlhelper는 관여하지 않습니다). 이것이 제가이 문제를 해결하는 방법입니다.
고려할 때 나는 앵커를 정의합니다 (hrefs가없는 앵커는 W3 검증을 통과합니다) :
<a id='removefromcart_<%=row.ID%>' title='Remove from cart'
class='remove-link' />
외부 JavaScript 파일에서 :
var onclick = function(event){
event.preventDefault();
var link = $(event.targetSource());
//tag ids should be injected through view asp/cx
$('#Step2_RemoveRegistrationForm input[name=id]')
.val(link.attr('id').split('_')[1])
};
$('a[id^=removefromcart]').click(onclick);
CSS에서 :
a {cursor:pointer;} /*anchors without href by default haven't pointer*/
나는 htmlhelpers의 JavaScript를 찌르는 것이 너무 지저분하다고 생각합니다.
edit2 :
앵커 텍스트는 태그 내부에 정의됩니다. 나는 항상 그것을 혼동합니다. 그리고 대상 소스 () 잘못되었습니다 도. event.targetSource () => event.target을 다시 작성하십시오.