2009-08-13 19 views
6

का उपयोग करते समय वेबफॉर्म से एचटीएमएल हेल्पर एक्सेस करें मैं एक वेबफॉर्म जोड़ रहा हूं जिससे मैं यूआरएल के मार्गों को हल करना चाहता हूं। उदाहरण के लिए, MVC में मैं सिर्फएएसपी.नेट एमवीसी

return RedirectToAction("Action", "Controller"); 

का प्रयोग करेंगे तो, आप एक ही आवेदन पत्र में एक वेब-फ़ॉर्म से समान URL हो रही का एक तरीका है, यह सराहना की जाएगी।

+0

आप UrlHelper का एक उदाहरण की जरूरत है, नहीं HtmlHelper –

+3

इस प्रयास करें: http://stackoverflow.com/questions/724153/how-do-i-construct-a-route-without-viewcontext-in-asp -नेट-एमवीसी –

उत्तर

15

अपने वेबफ़ॉर्म में कुछ इस तरह का प्रयास करें:

<% var requestContext = new System.Web.Routing.RequestContext(
     new HttpContextWrapper(HttpContext.Current), 
     new System.Web.Routing.RouteData()); 
    var urlHelper = new System.Web.Mvc.UrlHelper(requestContext); %> 

<%= urlHelper.RouteUrl(new { controller = "Controller", action = "Action" }) %> 
0

एक वास्तविक HtmlHelper या एक क्लीनर तरीका एक पेज में urlHelper उपयोग करने के लिए की तलाश में उन लोगों के लिए:

public static class PageCommon 
{ 
    public static System.Web.Mvc.UrlHelper GetUrlHelper(this System.Web.UI.Control c) 
    { 
     var helper = new System.Web.Mvc.UrlHelper(c.Page.Request.RequestContext); 
     return helper; 
    } 
    class ViewDataBag : IViewDataContainer 
    { 
     ViewDataDictionary vdd = new ViewDataDictionary(); 
     public ViewDataDictionary ViewData 
     { 
      get 
      { 
       return vdd; 
      } 
      set 
      { 
       vdd = value; 
      } 
     } 
    } 
    public static System.Web.Mvc.HtmlHelper GetHtmlHelper(this System.Web.UI.Control c) 
    { 

     var v = new System.Web.Mvc.ViewContext(); 
     var helper = new System.Web.Mvc.HtmlHelper(v, new ViewDataBag()); 
     return helper; 
    } 
} 
+0

यह मेरे लिए असफल रहा। मैंने क्लास पेजकॉमन क्लास बनाया है। और फिर मैंने MasterPage.master पर स्निपेट जोड़ा। '<% = this.GetHtmlHelper()। आंशिक (" त्रुटि ")%>' और एक ArgumentNullException प्राप्त हुआ। –

3
कोड की

संशोधित संस्करण पेजकॉमन के लिए ऊपर ... क्योंकि वर्तमान में यह टूट जाता है।

public static class MvcPages{ 
public static UrlHelper GetUrlHelper(this System.Web.UI.Control c) 
{ 
    var helper = new System.Web.Mvc.UrlHelper(c.Page.Request.RequestContext); 
    return helper; 
} 

public static HtmlHelper GetHtmlHelper(this System.Web.UI.Control c) 
{ 
    var httpContext = new HttpContextWrapper(HttpContext.Current); 
    var controllerContext = new ControllerContext(httpContext, new RouteData(), new DummyController()); 
    var viewContext = new ViewContext(controllerContext, new WebFormView(controllerContext, "View"), new ViewDataDictionary(), new TempDataDictionary(), TextWriter.Null); 

    var helper = new HtmlHelper(viewContext, new ViewDataBag()); 
    return helper; 
} 

private class ViewDataBag : IViewDataContainer 
{ 
    ViewDataDictionary vdd = new ViewDataDictionary(); 
    public ViewDataDictionary ViewData 
    { 
     get 
     { 
      return vdd; 
     } 
     set 
     { 
      vdd = value; 
     } 
    } 
} 

private class DummyController : Controller 
{ 

} 

} 
+0

यह मेरे लिए असफल रहा। मैंने वर्ग एमवीसीपीज बनाया। और फिर मैंने MasterPage.master पर स्निपेट जोड़ा। '<% = this.GetHtmlHelper()। आंशिक (" त्रुटि ")%>' और एक अवैधऑपरेशन अपवाद प्राप्त हुआ। –

संबंधित मुद्दे