HTML ボタンを ActionLink に変換する
-
12-09-2019 - |
質問
HTML ボタンが設定されており、代わりにテキストベースのリンクに変換したい必要なプロパティの設定範囲で機能しています。さらに、HTML ヘルパーとインテリセンスの操作に慣れるために、これらのプロパティを 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" />
THX
解決
それはそれほど難しいことではないはずです...しかし、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属性
public static string link(このhtmlhelper htmlhelper、string linktext、string href、object 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は関係しません)が、私ならこの問題を解決する方法は次のとおりです。
ビューではアンカーを定義します(hrefのないアンカーは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 をいじるのは面倒すぎると思います。
編集2:
アンカーテキストはタグ内で定義します。私はいつもそれを混乱させます。そして、targetSource() のようです 間違っている あまりにも。書き換えてみてください:イベント.ターゲットソース()=>イベント.ターゲット。