0
我正在研究ASP.NE MVC4,我正在使用LungoJS庫進行開發。如何從助手調用動作並避免渲染?
我正在開發一個幫助器,以我需要的方式渲染LungoJS控件。
對於選擇輸入,我想要得到一個包含每個選項數據的JSON。
我可以從現有控制器的操作中獲取所需的JSON。
但是當我打電話從助手的作用,視圖渲染我一個<pre>
標籤內的HTML :-(
查看
<div class="form" id="address-data">
@Html.LungoInputFor(m => m.CaseServiceCaseModel.CaseAddressModel.AddressDataModel.TerritoryId, "text", @Labels.Territory, @htmlAttributesRO, true)
@Html.LungoSelectFor(m => m.CaseServiceCaseModel.CaseAddressModel.AddressDataModel.TerritoryId, @Labels.Territory, null, true, "GetTerritoryKendo", "Address")
助手
public static MvcHtmlString LungoSelectFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string label = "", object htmlAttributes = null, bool fieldset = false, string action = "", string controller = "")
{
TagBuilder tag = new TagBuilder("select");
JavaScriptSerializer js = new JavaScriptSerializer();
MvcHtmlString data = ChildActionExtensions.Action(html, action, controller);
object[] json = js.Deserialize<object[]>(data.ToString());
foreach (Dictionary<string,object> item in json)
{
foreach (var property in item)
{
TagBuilder option = new TagBuilder("option");
switch (property.Key)
{
case "Selected":
if ((bool)property.Value)
{
option.MergeAttribute("selected","selected");
}
break;
case "Text":
option.InnerHtml = property.Value.ToString();
break;
case "Value":
option.MergeAttribute("value", property.Value.ToString());
break;
default:
break;
}
tag.InnerHtml += option.ToString(TagRenderMode.Normal);
}
}
return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
}
我不理解爲什麼如果我從變量中獲取Action中的htmlstring,並且在我僅返回Select輸入html之後,將影響整個頁面...如果我評論ChildActionExtensions.Action(html, action, controller)
視圖呈現良好(但沒有我需要的內容...)