ASP.NET MVC के नवीनतम (RC1) रिलीज में, मुझे लिंक के बजाय बटन या छवि के रूप में प्रस्तुत करने के लिए Html.ActionLink कैसे मिलती है?
AjaxHelper
साथ विस्तार करके ActionButton
) मुझे लगा कि मैं इसे नीचे साझा करूंगा।
ASP.NET MVC के नवीनतम (RC1) रिलीज में, मुझे लिंक के बजाय बटन या छवि के रूप में प्रस्तुत करने के लिए Html.ActionLink कैसे मिलती है?
AjaxHelper
साथ विस्तार करके ActionButton
) मुझे लगा कि मैं इसे नीचे साझा करूंगा।
जवाबों:
देर से प्रतिक्रिया लेकिन आप इसे सरल रख सकते हैं और HTMLAttributes ऑब्जेक्ट में CSS क्लास लगा सकते हैं।
<%= Html.ActionLink("Button Name", "Index", null, new { @class="classname" }) %>
और फिर अपनी स्टाइलशीट में एक क्लास बनाएं
a.classname
{
background: url(../Images/image.gif) no-repeat top left;
display: block;
width: 150px;
height: 150px;
text-indent: -9999px; /* hides the link text */
}
मुझे Url.Action () और Url.Content () का उपयोग करना पसंद है:
<a href='@Url.Action("MyAction", "MyController")'>
<img src='@Url.Content("~/Content/Images/MyLinkImage.png")' />
</a>
कड़ाई से बोलते हुए, Url.Content केवल पथ के लिए आवश्यक है वास्तव में आपके प्रश्न के उत्तर का हिस्सा नहीं है।
@BrianLegg को इंगित करने के लिए धन्यवाद कि यह नए रेजर व्यू सिंटैक्स का उपयोग करना चाहिए। उदाहरण के अनुसार अद्यतन किया गया है।
मुझे सरलीकृत कहें, लेकिन मैं सिर्फ इतना करता हूं:
<a href="<%: Url.Action("ActionName", "ControllerName") %>">
<button>Button Text</button>
</a>
और आप सिर्फ हाइपरलिंक हाइलाइट का ख्याल रखें। हमारे उपयोगकर्ता इसे पसंद करते हैं :)
text-decoration:none
कि बेवकूफ रेखांकित से छुटकारा पाने के लिए। यह कुछ ब्राउज़रों (निश्चित रूप से फ़ायरफ़ॉक्स 11.0) के लिए आवश्यक है।
बूटस्ट्रैप का उपयोग यह एक नियंत्रक क्रिया का लिंक बनाने के लिए सबसे छोटा और सबसे साफ तरीका है जो एक गतिशील बटन के रूप में दिखाई देता है:
<a href='@Url.Action("Action", "Controller")' class="btn btn-primary">Click Me</a>
या Html सहायकों का उपयोग करने के लिए:
@Html.ActionLink("Click Me", "Action", "Controller", new { @class = "btn btn-primary" })
बस:
<button onclick="@Url.Action("index", "Family", new {familyid = Model.FamilyID })">Cancel</button>
onclick
साथ सामग्री के आसपास के बिना मैं यह काम करने के लिए नहीं मिल सका। location.href
onclick="location.href='@Url.Action(....)'"
एक देर से जवाब लेकिन यह है कि मैं कैसे एक बटन में अपने ActionLink कर रहा हूँ। हम अपनी परियोजना में बूटस्ट्रैप का उपयोग कर रहे हैं क्योंकि यह सुविधाजनक बनाता है। कभी भी @T का मन न करें क्योंकि इसका केवल एक अनुवादक जो हम उपयोग कर रहे हैं।
@Html.Actionlink("Some_button_text", "ActionMethod", "Controller", "Optional parameter", "html_code_you_want_to_apply_to_the_actionlink");
ऊपर इस तरह एक लिंक देता है और यह नीचे दी गई तस्वीर के रूप में दिखता है:
localhost:XXXXX/Firms/AddAffiliation/F0500
मेरे दृष्टीकोण से:
@using (Html.BeginForm())
{
<div class="section-header">
<div class="title">
@T("Admin.Users.Users")
</div>
<div class="addAffiliation">
<p />
@Html.ActionLink("" + @T("Admin.Users.AddAffiliation"), "AddAffiliation", "Firms", new { id = (string)@WorkContext.CurrentFirm.ExternalId }, new { @class="btn btn-primary" })
</div>
</div>
}
आशा है कि यह किसी की मदद करता है
new { @class="btn btn-primary" })
+ एक
यदि आप लिंक का उपयोग नहीं करना चाहते हैं, तो बटन का उपयोग करें। आप छवि को बटन में भी जोड़ सकते हैं:
<button type="button" onclick="location.href='@Url.Action("Create", "Company")'" >
Create New
<img alt="New" title="New" src="~/Images/Button/plus.png">
</button>
टाइप = "बटन" फॉर्म जमा करने के बजाय आपकी कार्रवाई करता है।
आप ऐसा नहीं कर सकते Html.ActionLink
। Url.RouteUrl
जिस तत्व को आप चाहते हैं उसका निर्माण करने के लिए आपको URL का उपयोग करना चाहिए और उसका उपयोग करना चाहिए ।
<button onclick="location.href='@Url.Action("NewCustomer", "Customers")'">Checkout >></button>
यहां तक कि बाद में प्रतिक्रिया, लेकिन मैं बस एक ही मुद्दे में भाग गया और अपनी खुद की छवि लिंक HtmlHelper एक्सटेंशन लिखना समाप्त कर दिया ।
आप ऊपर दिए गए लिंक में मेरे ब्लॉग पर इसका कार्यान्वयन पा सकते हैं।
बस किसी के कार्यान्वयन में कमी आने की स्थिति में जोड़ा गया।
<li><a href="@Url.Action( "View", "Controller" )"><i class='fa fa-user'></i><span>Users View</span></a></li>
लिंक के साथ एक आइकन प्रदर्शित करने के लिए
मेहरदाद क्या कहता है - या HtmlHelper
एक्सटेंशन पद्धति से url हेल्पर का उपयोग करें जैसे कि स्टीफन वाल्थर यहाँ वर्णन करता है और अपनी खुद की एक्सटेंशन विधि बनाता है जिसका उपयोग आपके सभी लिंक को प्रस्तुत करने के लिए किया जा सकता है।
फिर सभी लिंक को बटन / एंकर या जो भी आप पसंद करते हैं, प्रस्तुत करना आसान होगा - और, सबसे महत्वपूर्ण बात, आप बाद में अपना मन बदल सकते हैं जब आपको पता चलेगा कि आप वास्तव में अपने लिंक बनाने के कुछ अन्य तरीके पसंद करते हैं।
आप अपने खुद के विस्तार की विधि बना सकते हैं
मेरे कार्यान्वयन पर नज़र डालें
public static class HtmlHelperExtensions
{
public static MvcHtmlString ActionImage(this HtmlHelper html, string action, object routeValues, string imagePath, string alt, object htmlAttributesForAnchor, object htmlAttributesForImage)
{
var url = new UrlHelper(html.ViewContext.RequestContext);
// build the <img> tag
var imgBuilder = new TagBuilder("img");
imgBuilder.MergeAttribute("src", url.Content(imagePath));
imgBuilder.MergeAttribute("alt", alt);
imgBuilder.MergeAttributes(new RouteValueDictionary(htmlAttributesForImage));
string imgHtml = imgBuilder.ToString(TagRenderMode.SelfClosing);
// build the <a> tag
var anchorBuilder = new TagBuilder("a");
anchorBuilder.MergeAttribute("href", action != null ? url.Action(action, routeValues) : "#");
anchorBuilder.InnerHtml = imgHtml; // include the <img> tag inside
anchorBuilder.MergeAttributes(new RouteValueDictionary(htmlAttributesForAnchor));
string anchorHtml = anchorBuilder.ToString(TagRenderMode.Normal);
return MvcHtmlString.Create(anchorHtml);
}
}
फिर इसे अपने दृश्य में उपयोग करें मेरे कॉल को देखें
@Html.ActionImage(null, null, "../../Content/img/Button-Delete-icon.png", Resource_en.Delete,
new{//htmlAttributesForAnchor
href = "#",
data_toggle = "modal",
data_target = "#confirm-delete",
data_id = user.ID,
data_name = user.Name,
data_usertype = user.UserTypeID
}, new{ style = "margin-top: 24px"}//htmlAttributesForImage
)
सामग्री डिजाइन लाइट और एमवीसी के लिए:
<a class="mdl-navigation__link" href='@Url.Action("MyAction", "MyController")'>Link Name</a>
@using (Html.BeginForm("DeleteMember", "Member", new { id = Model.MemberID }))
{
<input type="submit" value="Delete Member" onclick = "return confirm('Are you sure you want to delete the member?');" />
}
ऐसा लगता है कि छवि के रूप में प्रदर्शित करने वाले लिंक को बनाने के लिए बहुत सारे समाधान हैं, लेकिन कोई भी ऐसा नहीं है जो इसे एक बटन के रूप में प्रदर्शित करता है।
केवल अच्छा तरीका है जो मैंने ऐसा करने के लिए पाया है। इसका थोड़ा सा हैकी है, लेकिन यह काम करता है।
आपको जो करना है वह एक बटन और एक अलग एक्शन लिंक बनाना है। सीएसएस का उपयोग कर एक्शन लिंक को अदृश्य बनाएं। जब आप बटन पर क्लिक करते हैं, तो यह एक्शन लिंक के क्लिक इवेंट को फायर कर सकता है।
<input type="button" value="Search" onclick="Search()" />
@Ajax.ActionLink("Search", "ActionName", null, new AjaxOptions {}, new { id = "SearchLink", style="display:none;" })
function Search(){
$("#SearchLink").click();
}
हर बार जब आप एक लिंक जोड़ते हैं जो बटन की तरह दिखना है, तो ऐसा करना बट में दर्द हो सकता है, लेकिन यह वांछित परिणाम को पूरा करता है।
FORMACTION का उपयोग करें
<input type="submit" value="Delete" formaction="@Url.Action("Delete", new { id = Model.Id })" />
जिस तरह से मैंने किया है वह एक्शनलिंक और इमेज को अलग-अलग तरीके से करना है। एक्शनलिंक छवि को छिपे के रूप में सेट करें और फिर एक jQuery ट्रिगर कॉल जोड़ा। यह अधिक वर्कअराउंड है।
'<%= Html.ActionLink("Button Name", "Index", null, new { @class="yourclassname" }) %>'
<img id="yourImage" src="myImage.jpg" />
ट्रिगर उदाहरण:
$("#yourImage").click(function () {
$('.yourclassname').trigger('click');
});
Url.Action()
के अधिकांश अधिभार के लिए आपको नंगे URL मिलेगा Html.ActionLink
, लेकिन मुझे लगता है कि URL-from-lambda
कार्यक्षमता केवल Html.ActionLink
अब तक उपलब्ध है । उम्मीद है कि वे Url.Action
कुछ बिंदु पर एक समान अधिभार जोड़ देंगे ।
इस तरह से मैंने इसे स्क्रिप्टिंग के बिना किया:
@using (Html.BeginForm("Action", "Controller", FormMethod.Get))
{
<button type="submit"
class="btn btn-default"
title="Action description">Button Label</button>
}
समान, लेकिन पैरामीटर और पुष्टि संवाद के साथ:
@using (Html.BeginForm("Action", "Controller",
new { paramName = paramValue },
FormMethod.Get,
new { onsubmit = "return confirm('Are you sure?');" }))
{
<button type="submit"
class="btn btn-default"
title="Action description">Button Label</button>
}