net mvc how custom create c# asp.net-mvc-3 debugging

c# - how - mvc custom html helper



''System.Web.Mvc.HtmlHelper'' no tiene un método aplicable llamado ''Parcial'' (1)

Su problema es que no define un modelo en la parte superior de su vista. Debido a esto, el tipo predeterminado es de tipo dynamic .

Normalmente, esto no es un problema, pero tienes esto:

@Html.Partial("BillingInfo", Model)

Esto es, en efecto, pasar un tipo dinámico a su Html.Partial() , que es lo que está Html.Partial() el error.

Esta es una llamada sin sentido de todos modos, simplemente quite la parte del Modelo y debería funcionar. Pasar el modelo es la operación predeterminada de todos modos, por lo que no está intentando hacer nada que no sea el predeterminado.

Estoy recibiendo este error:

error CS1973: ''System.Web.Mvc.HtmlHelper'' no tiene un método aplicable llamado ''Parcial'' pero parece tener un método de extensión con ese nombre. Los métodos de extensión no pueden ser enviados dinámicamente. Considere lanzar los argumentos dinámicos o llamar al método de extensión sin la sintaxis del método de extensión. "}

Por lo que leí aquí Razor View Engine: un árbol de expresiones puede no contener una operación dinámica porque se debe al uso de viewbag (?), Que realmente estoy usando Session.

Este es mi formulario web:

@using SuburbanCustPortal.MiscClasses @{ ViewBag.Title = "Account Screen"; } <h2>AccountScreen</h2> <div class="leftdiv"> <fieldset> <legend>Customer Info</legend> @Html.Partial("CustomerInfo") </fieldset> <fieldset> <legend>Delivery Address</legend> @Html.Partial("DeliveryAddress") </fieldset> <fieldset> <legend>Delivery Info</legend> @Html.Partial("DeliveryInfo") </fieldset> </div> <div class="rightdiv"> <fieldset> <legend>Balance</legend> @Html.Partial("AccountBalance") </fieldset> @if (SessionHelper.ShowPaymentOptions || SessionHelper.ShowHistory) { <fieldset> <legend>Account Options</legend> <br/> @using (Html.BeginForm("AccountScreenButton", "Customer", FormMethod.Post)) { <div class="sidebysidebuttons"> <div class="box"> @if (SessionHelper.ShowHistory && SessionHelper.ShowAccountScreenPaymentButton) { <button class="sidebysidebutton1" name="options" value="payment">Make a Payment</button> <button class="sidebysidebutton2" name="options" value="activity">Display Activity</button> } else { if (SessionHelper.ShowAccountScreenPaymentButton) { <button class="leftpaddedsinglebutton" name="options" value="payment">Make a Payment</button> } if (SessionHelper.ShowHistory) { <button class="leftpaddedsinglebutton" name="options" value="activity">Display Activity</button> } } </div> </div> } </fieldset> } <fieldset> <legend>Billing Info</legend> @Html.Partial("BillingInfo", Model) </fieldset> </div>

Esto es parte de mi SessionHelper para darle una idea:

public static CustomerData CustomerSessionData { get { try { return (CustomerData) HttpContext.Current.Session["CustomerSessionData"]; } catch (Exception) { return null; } } set { HttpContext.Current.Session["CustomerSessionData"] = value; } } public static bool ShowPaymentTab { get { return HttpContext.Current.Session["ShowPaymentTab"].ToBool(); } set { HttpContext.Current.Session["ShowPaymentTab"] = value; } }

No estoy seguro de si el problema está en el formulario, ya que cuando coloco un punto de interrupción en el formulario, no se detiene allí.

Tengo dos preguntas:

  1. ¿Cómo depuro dónde está el problema en el formulario?
  2. ¿No puedo usar una clase como sesión y hacer referencia a ella en el formulario? Supongo que ahí es donde está el problema.