এএসপি.নেট এমভিসির সর্বশেষ (আরসি 1) প্রকাশে, আমি লিঙ্কের পরিবর্তে একটি বোতাম বা চিত্র হিসাবে রেন্ডার করতে এইচটিএমএল.একশনলিঙ্কটি কীভাবে পাব?
AjaxHelper
একটি দিয়ে প্রসারিত করে ActionButton
) আমি ভেবেছিলাম আমি এটি নীচে ভাগ করব।
এএসপি.নেট এমভিসির সর্বশেষ (আরসি 1) প্রকাশে, আমি লিঙ্কের পরিবর্তে একটি বোতাম বা চিত্র হিসাবে রেন্ডার করতে এইচটিএমএল.একশনলিঙ্কটি কীভাবে পাব?
AjaxHelper
একটি দিয়ে প্রসারিত করে ActionButton
) আমি ভেবেছিলাম আমি এটি নীচে ভাগ করব।
উত্তর:
দেরিতে প্রতিক্রিয়া তবে আপনি কেবল এটি সহজ রাখতে পারবেন এবং এইচটিএমএলঅ্যাট্রিবিউটস অবজেক্টে একটি 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 কেবলমাত্র পথচলার জন্য প্রয়োজন আপনার প্রশ্নের উত্তরের অংশ নয়।
এটি নতুন রেজার ভিউ সিনট্যাক্সটি ব্যবহার করা উচিত বলে উল্লেখ করার জন্য @ ব্রায়ানলেগকে ধন্যবাদ জানাই। উদাহরণ অনুসারে আপডেট করা হয়েছে।
আমাকে সরলবাদী বলুন, তবে আমি কেবল এটি করি:
<a href="<%: Url.Action("ActionName", "ControllerName") %>">
<button>Button Text</button>
</a>
এবং আপনি কেবল হাইপারলিঙ্ক হাইলাইটের যত্ন নিন। আমাদের ব্যবহারকারীরা এটি ভালবাসে :)
text-decoration:none
নির্বোধের আন্ডারলাইন থেকে মুক্তি পেতে লিঙ্কটি (হোভার এবং সক্রিয়) করুন । এটি কয়েকটি ব্রাউজারের জন্য প্রয়োজনীয় (নিশ্চিতভাবে ফায়ারফক্স ১১.০)
ডায়ামিক বোতাম হিসাবে প্রদর্শিত একটি নিয়ামক ক্রিয়াকলাপের লিঙ্ক তৈরি করার জন্য এটি বুটস্ট্র্যাপ ব্যবহার করা সবচেয়ে সংক্ষিপ্ত এবং পরিষ্কার পদ্ধতি:
<a href='@Url.Action("Action", "Controller")' class="btn btn-primary">Click Me</a>
বা এইচটিএমএল সহায়কগুলি ব্যবহার করতে:
@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(....)'"
) দিয়ে ঘিরে না করে আমি এটি কাজ করতে পারি না।
দেরিতে উত্তর তবে এইভাবে আমি আমার অ্যাকশন লিঙ্কটিকে একটি বোতামে পরিণত করি। আমরা আমাদের প্রকল্পে বুটস্ট্র্যাপ ব্যবহার করছি কারণ এটি সুবিধাজনক করে তুলেছে। @ টি-তে কিছু মনে করবেন না কারণ এটি কেবলমাত্র আমরা অনুবাদক ব্যবহার করছি।
@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
আপনার পছন্দসই উপাদানটি তৈরি করতে আপনার ইউআরএল ব্যবহার এবং ব্যবহার করা উচিত ।
<button onclick="location.href='@Url.Action("NewCustomer", "Customers")'">Checkout >></button>
এমনকি পরে প্রতিক্রিয়া, কিন্তু আমি কেবল একটি অনুরূপ ইস্যুতে দৌড়েছি এবং আমার নিজের চিত্র লিঙ্ক এইচটিএমএল হেল্পার এক্সটেনশনটি লিখে শেষ করেছি ।
উপরের লিঙ্কটিতে আপনি এটি আমার ব্লগে এটির একটি বাস্তবায়ন পেতে পারেন।
কেউ যদি বাস্তবায়নের শিকার হয় তবে সবেমাত্র যুক্ত করা হয়েছে।
<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
)
@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();
}
প্রতিবার আপনি কোনও লিঙ্ক যুক্ত করুন যা বোতামের মতো দেখতে দরকার এমনটি করার জন্য বাটের ব্যথা হতে পারে তবে এটি পছন্দসই ফলাফলটি সম্পাদন করে।
এটি করার জন্য এই এক্সটেনশনটি সবেমাত্র পেয়েছে - সহজ এবং কার্যকর।
আমি যেভাবে এটি করেছি তা হল অ্যাকশনলিঙ্ক এবং চিত্রটি আলাদাভাবে রাখা have অ্যাকশন লিঙ্ক চিত্রটি লুকানো হিসাবে সেট করুন এবং তারপরে একটি jQuery ট্রিগার কল যুক্ত করুন। এটি একটি workaround আরও।
'<%= Html.ActionLink("Button Name", "Index", null, new { @class="yourclassname" }) %>'
<img id="yourImage" src="myImage.jpg" />
ট্রিগার উদাহরণ:
$("#yourImage").click(function () {
$('.yourclassname').trigger('click');
});
Url.Action()
বেশিরভাগ ওভারলোডের জন্য খালি ইউআরএল পাবেন 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>
}