內的動態partialview我需要使用MVC生成動態表格。
我打算在Controller的Action(基於數據庫值)內創建HTML代碼,並將其作爲部分視圖傳遞給View。
要完成此任務,我需要在Action中創建一個動態視圖。所以我可以添加所有的html代碼並將其作爲部分視圖傳遞給視圖。
有沒有辦法做到這一點?生成控制器MVC C#
或
是否有任何其他方式在MVC動態生成HTML元素?
內的動態partialview我需要使用MVC生成動態表格。
我打算在Controller的Action(基於數據庫值)內創建HTML代碼,並將其作爲部分視圖傳遞給View。
要完成此任務,我需要在Action中創建一個動態視圖。所以我可以添加所有的html代碼並將其作爲部分視圖傳遞給視圖。
有沒有辦法做到這一點?生成控制器MVC C#
或
是否有任何其他方式在MVC動態生成HTML元素?
在這種行動,你可以返回動態創建html
內容。只要使用Content()
波紋管
return Content("<form><input value='"+valueFromDb+"'/>...</form>");
但這不是一個好的做法是這樣,你需要創建一個局部視圖,然後使用
//var modelFromDb=db.Table.FirstOrDefault();
return PartialView("MyPartial",modelFromDb);
EDITS返回它:要爲您的部分生成代碼,您需要在您的控制器動作中點擊右鍵,然後選擇添加視圖類型MyPartial as查看名稱,然後選中添加強類型視圖 ...您將需要精確的模型類和模板使用(列表,刪除,編輯,創建或空)
但第二種方式「MyPartial」是一個空視圖。我需要在服務器端生成該視圖所需的代碼。無論如何,要做到這一點? –
請參閱我的編輯:'要爲您的部分生成代碼,您需要右鍵單擊您的控制器操作並選擇添加視圖類型MyPartial作爲視圖名稱,然後選中添加強類型視圖...您將需要精確模型類和要使用的模板(列表,刪除,編輯,創建或清空)' – Bellash
也許我提出這個問題的方式並不能顯示出我的真實需求。例如,db中有100個記錄。根據數據庫的值,局部視圖會發生變化,例如在一個實例中,它是2個文本框,1個單選按鈕和3個複選框。在另一個例子中,它是4個文本框,3個單選按鈕和2個複選框,並且像智者一樣。所以我不能硬編碼模型和視圖。我需要動態生成視圖所需的html(剃鬚刀)代碼,然後將其放到部分視圖中,並將其顯示在父視圖的div元素中。所以無論如何,我可以做... –
我不認爲生成控制器代碼是一個好主意,事情會變得一團糟。
如果您要保存在數據庫中的字段,您必須對保存每個字段的類型。
例子:
Field Types Table
TypeId Name
1 TextBox
2 DropDown
Fields Table
FieldId TypeId (FK) IsEdit FormId (FK) Style
1 1 1 1 color: red
2 2 1 1 NULL
從數據庫中讀取時可以轉換這些領域
public class Field
{
// Common Properties
public string Style {get;set;}
public int TypeId {get;set;}
public string Name {get;set;
}
然後你在DB你可以創建一個類和派生每種類型的列表from Field
public class DropDown : Field
{
public Dictionary<string, string> Values {get;set;}
}
public class TextBox : Field
{
public string Value {get;set;}
}
然後當讀到米數據庫通過一個工廠類
// READ從DB
通過每個var model = new List<Field>();
var fields = dbContext.Fields.Where(s => s.FormId == 1);
foreach(var field in fields){
model.Add(FieldFactory(field));
}
//穿過FACTORY
public Field FieldFactory(Form form){
switch(field.TypeId)
{
case 1: // Textbox --> you can use enum
return new TextBox(SET_VALUES);
}
}
然後例如創建的局部視圖form.cshtml
,通過場的列表作爲模型
return PartialView("form", new List<Field>());
然後處理該字段類型在form.cshtml
@model List<Field>
@foreach(var field in Model){
switch(field.TypeId){
case 1: // TextBox
@Html.Partial("TextBox", (TextBox)field)
break;
case 2:
@Html.Partial("DropDown", (DropDown)field)
break;
}
}
創建每個字段類型的局部視圖:
TextBox.cshtml:
@model TextBox
<input type ="text" name = "@Model.Name" stlye ="@Model.Style" value = "@Model.Value" />
DropDown.cshtml
@model DropDown
@Html.DropDownListFor(m => m.FieldId, new SelectList(Model.Values, "Value", "Key")
使用此方法,您可以將JavaScript和jQuery代碼添加到每個字段PartialView。
你可以提供更多的細節或例子什麼是不良結果?也添加您的控制器和部分視圖代碼。 – Mivaweb
你可以使用像鬍子一樣的模板引擎http://mustache.github.io/ – Akshita
「動態」是一個流行詞。解釋你想要做什麼。 – CodeCaster