2009-05-18 26 views
10

में लिंकबटन मुझे कुछ एएसपी लिंकबटन को एएसपी.नेट एमवीसी व्यू पेज पर तुरंत चालू करने की आवश्यकता है। मैंने कुछ चीजों की कोशिश की है, और मैं उन्हें सही बाहर आने के लिए नहीं मिल सकता। यहाँ मेरा कोड के सबसे हाल ही अवतार: aspx फ़ाइलएएसपी.नेट एमवीसी

<body> 
<% using (Html.BeginForm("TitleDetail", "Movies", FormMethod.Post, new{runat="server"})) { %> 

    <ul> 
    <% foreach (var disc in Model.Title.tblDiscs) %> 
    <% { %> 

     <li> 
      <asp:LinkButton ID="Play">Link</asp:LinkButton> 
     </li> 
    <% } %> 
    </ul> 
<% } %> 
</body> 

क्या यह फ़ायरफ़ॉक्स में renders संग्रह मैं गणना कर रहा हूँ में प्रत्येक सदस्य के लिए पाठ लिंक का एक उदाहरण है, लेकिन वे हाइपरलिंक नहीं हैं, बस पाठ । सृजित HTML इस

<form action="/MyMovies/TitleDetail/239" method="post" runat="server">test title <br /> 

    <ul> 
     <li> 

      <asp:LinkButton ID="Play">Link</asp:LinkButton> 
     </li> 

     <li> 
      <asp:LinkButton ID="Play">Link</asp:LinkButton> 
     </li> 

     <li> 
      <asp:LinkButton ID="Play">Link</asp:LinkButton> 

     </li> 

    </ul> 

तरह लग रहा है मैं एक एएसपी के लिए एक runat = "सर्वर" attribuite जोड़ने की कोशिश की है: LinkButton टैग, लेकिन मैं एक क्रम अपवाद है कि नियंत्रित करता है केवल अंदर रखा जा सकता है मिल runat = "server" विशेषता के साथ एक फॉर्म टैग। जो मुझे लगता है कि मैंने पहले से ही किया है, इसलिए मैं वास्तव में इसे समझ नहीं पा रहा हूं। क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं, और इसे ठीक करने के लिए मुझे क्या करने की ज़रूरत है ताकि लिंकबटन वास्तव में लिंक हो?

उत्तर

7
ASP.NET MVC के साथ

आप Html.ActionLink(...) सहायक तरीकों (और) की तरह उपयोग करना चाहिए। वे LinkButtons की तुलना में बहुत अधिक समृद्ध कार्यक्षमता प्रदान करते हैं।

2

दुर्भाग्य से, एएसपी.नेट एमवीसी अभी वेब फॉर्म नियंत्रणों का समर्थन नहीं करता है। माफ़ कीजिये! :(

आप एक मानक HTML लिंक का उपयोग करना होगा।

+12

मुझे लगता है कि वास्तव में एक अच्छी बात (टीएम) है। :) – BobbyShaftoe

+1

@ बॉबी शाफ्टो, किस आधार पर एक अच्छी बात है? आम तौर पर जो कुछ भी सर्वर की स्थिति को बदलता है उसे POST क्रिया का उपयोग करना चाहिए, जीईटी का उपयोग केवल डेटा पुनर्प्राप्त करने के लिए किया जाना चाहिए (वे डब्ल्यू 3 सी की सिफारिशें हैं और वे सुरक्षा के लिए हैं)। कॉस्मेटिक कारणों से, बटन का उपयोग करना हमेशा संभव नहीं होता है, इसलिए लिंकबटन की आवश्यकता होती है। –

15

मेरा अनुमान है कि आप LinkButton उपयोग करने के लिए इसे का उपयोग प्रपत्र को जमा करना चाहते है अगर ऐसा है, मैं कुछ इसी तरह किया है और यह कुछ इस तरह है:?

<% using (Html.BeginForm("TitleDetail", "Movies", 
    FormMethod.Post, new{ id = "MyForm", name = "MyForm" })) { %>  
<ul> 
    <% foreach (var disc in Model.Title.tblDiscs) { %> 
     <li> 
      <a class="do-something-link" href="javascript:void(0);">Click</a> 
     </li> 
    <% } %> 
</ul> 
<% } %> 

फिर संभाल jQuery के माध्यम से प्रस्तुत:

$(document).ready(function(){ 
    $("a.do-something-link").click(function(ev) { 
     ev.preventDefault(); 
     $("#MyForm").submit(); 
    }); 
}); 
2

मैंने कुछ हद तक कच्ची विस्तार विधि लिखी। (यह सब मैं की जरूरत है) इस पर सुधार करने के लिए स्वतंत्र महसूस:

public static IHtmlString ActionButton(this UrlHelper urlHelper, string buttonText, 
    string actionName) 
{ 
    var html = string.Format("<input type=\"button\" value=\"{0}\" " + 
     "onclick=\"window.location = '{1}'\"/>", 
     buttonText, urlHelper.Action(actionName)); 

    return new HtmlString(html); 
} 

और ध्यान में रखते हुए, इसे इस तरह कहते हैं:

@Url.ActionButton("Button Text", "ActionMethod") 
संबंधित मुद्दे