এইচটিএমএল বোতামটি এমভিসি নিয়ন্ত্রণকারী এবং অ্যাকশন পদ্ধতিতে কল করে


204

আমি জানি এটি সঠিক নয়, তবে উদাহরণের জন্য আমি এই জাতীয় কিছু করতে চাই:

<%= Html.Button("Action", "Controller") %>

আমার লক্ষ্যটি এমন একটি এইচটিএমএল বোতাম তৈরি করা যা আমার এমভিসি নিয়ন্ত্রকের ক্রিয়া পদ্ধতিতে কল করবে।


4
"কল" সংজ্ঞায়িত করুন। এর অর্থ কোনও সম্ভাবনার নামকরণের জন্য একটি এজেএক্স কল, অন্য পৃষ্ঠার লিঙ্ক, বা একটি ফর্ম পোস্ট করা হতে পারে।
ডিভে

উপরের বেশিরভাগ উত্তর ইতিমধ্যে কাজ করেছে, দুর্ভাগ্যক্রমে আমার পক্ষে কেউ কাজ করেনি। আমি এখানে অন্য স্ট্যাকওভারফ্লো পোস্টের একটি দরকারী উত্তর পেয়েছি! এটি এএসপিতে আমার জন্য ডট নেট ফ্রেমওয়ার্ক 4.7 এমভিসি 5 এবং বুটস্ট্র্যাপ সংস্করণ 3 সহ কাজ করেছিল * * এবং অবশ্যই রেজার ভিউতে। আমি ধরে নিই প্রশ্নের মূল উদ্দেশ্যটি এমন লিঙ্কটি দেখানো যা বোতামের মতো দেখাচ্ছে।
ইমরান ফারুকী

উত্তর:


264

আপনি ক্রিয়ায় পোস্ট করতে না চাইলে কোনও ফর্ম ব্যবহার করার দরকার নেই। একটি ইনপুট বোতাম (জমা দেওয়া হয়নি) কৌশলটি করবে।

  <input type="button"
         value="Go Somewhere Else"
         onclick="location.href='<%: Url.Action("Action", "Controller") %>'" />

1
আমি এই পরামর্শটি ব্যবহার করেছি কারণ এটির কোনও ফর্মের প্রয়োজন হয় না। ধন্যবাদ!
হারুন সালাজার

2
মত HtmlHelper কিছু এটি মোড়ানো পারেpublic static string ActionButton(this HtmlHelper helper, string action, string controller, string text) { return String.Format("<input type=\"button\" value=\"{0}\" onclick=\"location.href='{1}' />",text,Url.Action(action,controller)); }
মনহেম

11
এটি আমার কোডে নির্বিঘ্ন স্ট্রিং ধ্রুবক ত্রুটি দেয়
বুড়াক করাকু

5
যদি আপনি <input type="button" value="Go Somewhere Else" onclick="location.href='<%: Url.Action("Action", "Controller", new { parameter1 = value1 }) %>'" />
এটির

1
<ইনপুট টাইপ = "বোতাম" মান = "মুছুন সমস্ত" অন্লিক = "লোকেশন.href = '@ উরল। অ্যাকশন (" মুছে ফেলুন "," হোম ")" "/>
ইউচাও ঝোউ 4:48

242

রেজার সিনট্যাক্স এখানে:

<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />

4
আইডিইতে আমি এখনও একটি "নির্বিঘ্নিত স্ট্রিং ধ্রুবক" ত্রুটি পেয়েছি যা এখনও সঠিকভাবে রেন্ডার হয়নি। : আমি সমাধান এখান থেকে ব্যবহার ছিল stackoverflow.com/a/16420877/410937
atconway

1
@ এটকনওয়ে - আশ্চর্যজনক, এটি আমার পক্ষে ঠিক কীভাবে উত্তরটি এটি উপস্থাপন করে তা কার্যকর করেছিল। VS2013।
এমেট্রেন

6
@atconway - একই সমস্যার সম্মুখীন হয়েছি কিন্তু থেকে ট্যাগ পরিবর্তিত হয়েছে 'input'থেকে 'button'এবং যে ত্রুটি সমাধান।
টনি স্টার্ক

6
প্যারামিটারগুলির সাথে <ইনপুট টাইপ = "বোতাম" শিরোনাম = "মুছুন" মান = "ডি" অনক্লিক = "অবস্থান শেরেফ = '@ উরল। "/>
সন্দীপ

আমার ক্ষেত্রে স্রেফ <button type="button" class="btn btn-primary" onclick="location.href='@Url.Action("action", "controller")'" >Go Somewhere Else</button>কৌশলটি ব্যবহার করে
আতিক বাকি

69
<button type="button" onclick="location.href='@Url.Action("MyAction", "MyController")'" />

টাইপ = "বোতাম" পৃষ্ঠা জমা দেওয়া থেকে বাধা দেয়। পরিবর্তে এটি আপনার ক্রিয়া সম্পাদন করে।


16

এটা চেষ্টা কর:

@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)

এটি আপনার জন্য কাজ করা উচিত।


আপনি বুটস্ট্র্যাপ বা অন্যান্য CSS ক্লাস যেমন ব্যবহার করতে পারেন: @ এইচটিএমএল.অ্যাকশনলিঙ্ক ("ডিসপ্লে টেক্সট", "অ্যাকশন", ["কন্ট্রোলার"], রুটভ্যালু: নাল, এইচটিএমএলঅ্যাট্রিবিউটস: নতুন {@ ক্লাস = "বিটিএন বিটিএন-ইনফরমেশন বিটিএন-এমডি ", শৈলী =" সাদা-স্থান: সাধারণ "})
আসফ

15

আপনি একটি নিয়ন্ত্রণকারী ক্রিয়ায় url উত্পন্ন করতে নির্দিষ্ট করতে url.Action ব্যবহার করতে পারেন, যাতে আপনি নিম্নলিখিতগুলির মধ্যে দুটি ব্যবহার করতে পারেন:

<form method="post" action="<%: Url.Action("About", "Home") %>">
   <input type="submit" value="Click me to go to /Home/About" />
</form>

বা:

<form action="#">
  <input type="submit" onclick="parent.location='<%: Url.Action("About", "Home") %>';return false;" value="Click me to go to /Home/About" />
  <input type="submit" onclick="parent.location='<%: Url.Action("Register", "Account") %>';return false;" value="Click me to go to /Account/Register" />
</form>

11

এভাবেই আপনি রেজারে একটি নির্দিষ্ট নিয়ন্ত্রক এবং অ্যাকশন পদ্ধতিতে আপনার ফর্মটি জমা দিতে পারেন।

 <input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />

10

উপরোক্ত উত্তরগুলির কয়েকটি তৈরি করে আপনি এটি করতে পারেন:

<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />

6

এইচটিএমএল <button>উপাদানটি এতে থাকা ফর্মটিতে কেবল পোস্টব্যাক করতে পারে।

অতএব, আপনাকে ক্রিয়াতে পোস্ট করা উচিত এমন একটি ফর্ম তৈরি করতে হবে, তারপরে একটি <button>বা <input type="submit" />ফর্মটি রেখে দিন।


5

যদি আপনি "নির্বিঘ্নিত স্ট্রিং ধ্রুবক" হিসাবে ত্রুটি পেয়ে থাকেন তবে নিম্নলিখিত রেজার সিনট্যাক্সটি ব্যবহার করুন:

<input type="button" onclick="@("location.href='"+ Url.Action("Index","Test")+ "'")" />


4

সুতরাং, আমি রেজার ব্যবহার করছি তবে এটি ব্যবহার করেও কার্যকর হবে। আমি মূলত একটি লিঙ্কে একটি বোতাম মোড়ানো করছি।

<a href="Controller/ActionMethod">
    <input type="button" value="Click Me" />
</a>

4

আপনি যখন নিয়ামকটিতে ক্রিয়াটি প্রয়োগ করেন তখন ব্যবহার করুন

return View("Index");

অথবা

return RedirectToAction("Index");

যেখানে সূচী। সিটিএসটিএমএল (বা পৃষ্ঠাটি ক্রিয়া উত্পন্ন করে) পৃষ্ঠাটি ইতিমধ্যে সংজ্ঞায়িত করা হয়েছে। অন্যথায় আপনি সম্ভবত "দর্শন বা এর প্রধান খুঁজে পাওয়া যায়নি ..." ত্রুটির মুখোমুখি হচ্ছেন।

সূত্র: https://blogs.msdn.microsoft.com/aspnetue/2010/09/17/best-practices- for- asp- net- mvc/


4

অনক্লিক পদ্ধতি থাকা সত্ত্বেও আপনি নিম্নোক্তভাবে ফর্মেশন ব্যবহার করতে পারেন:

<button type="submit" id="button1" name="button1" formaction='@Url.Action("Action", "Controller")'>Save</button>

এটি আরও ভাল কাজ করে যদি আপনার এইচটিপিপোস্ট ক্রিয়াকলাপের সাথে একটি ক্রিয়া থাকে তবে এটি ওয়েব ক্রলারদের ধ্বংসাত্মক লিঙ্কগুলিতে যাওয়া বন্ধ করবে (এই তথ্যের জন্য হেক্টর কোরিয়ার ধন্যবাদ)
তাহির খালিদ

3

এই উদাহরণটি ব্যবহার করুন:

<button name="nameButton" id="idButton" title="your title" class="btn btn-secondary" onclick="location.href='@Url.Action( "Index","Controller" new {  id = Item.id })';return false;">valueButton</button>

1

আপনি যদি হোম পৃষ্ঠায় ("/ হোম / সূচক") থাকেন এবং আপনি প্রশাসক নিয়ন্ত্রকের সূচক ক্রিয়াকে কল করতে চান, নিম্নলিখিতগুলি আপনার পক্ষে কাজ করবে।

<li><a href="/Admin/Index">Admin</a></li>

1

এটি ভাল এই উদাহরণ ব্যবহার করুন

এটিকে ব্যবহার করে কল অ্যাকশন এবং নিয়ামক ActionLink:

@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})

0

ঠিক আছে, আপনি মূলত বাটন কর্ম পাস করে যেতে এবং কল যখন ক্লিকের ঘটবে, এটা থেকে ভিতরে হতে হবে না পারেন এইচটিএমএল ব্যবহার, আপনি onclickউপর বোতাম যখন এটি ট্রিগার বাটন ক্লিক করা পেতে ...

<button id="my-button" onclick="location.href='@Url.Action("YourActionName", "YourControllerName")'">Submit</button>

0

আপনি সর্বদা এইচটিএমএলহেলপারদের সাথে খেলা করতে পারেন এবং কিছু স্টাফ তৈরি করতে পারেন

    public static IHtmlContent BtnWithAction(this IHtmlHelper htmlHelper, string id, string text, string css="", string action="", string controller="")
    {
        try
        {
            string str = $"<button id=\"{id}\" class=\"{css}\" type=\"button\" ###>{text}</button>";
            if (!string.IsNullOrEmpty(action) && !string.IsNullOrEmpty(controller))
            {                    
                string url = ((TagBuilder)htmlHelper.ActionLink("dummy", action, controller)).Attributes["href"];
                var click = !string.IsNullOrEmpty(url) ? $"onclick=\"location.href='{url}'\"" : string.Empty;
                return new HtmlString(str.Replace("###", click));
            }
            return new HtmlString(str.Replace("###", string.Empty));
        }
        catch (Exception ex)
        {
            Log.Error(ex, ex.Message);
            var fkup = "<script>alert(\"assumption is the mother of all failures\")</script>";
            return new HtmlString(fkup);
        }
    }

এবং তারপরে ভিউতে এটি কল করুন

@Html.BtnWithAction("btnCaretakerBack", "Back", "btn btn-primary float-right", "Index", "Caretakers")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.