天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ASP.NET MVC 2生成動態表單的一種最簡單的思路

  在BPM、OA等系統中,都會存在一個表單設計器。有些是通過操作gridview來完成一個表單的設計;有些是通過類似VS拖拽的方法完成一個表單的設計。很明顯后面一種優越于前面一種。無論是哪種,最后都會產生一些XML之類的表單結構的數據。

  這篇文章將講述,在表單設計器設計好表單之后,在ASP.NET MVC中如何將表單結構的xml轉換成實際應用系統中的表單。看下面一個xml文件,我們假設它是由一個表單設計器設計出來的。

<?xml version="1.0" encoding="utf-8" ?>
<
form name="form1">
<
field type="text" name ="firstname" class ="textbox" left="300" top="200"></field>
<
field type="text" name ="lastname" class ="textbox" left="700" top="200">祁林</field>
<
field type="text" name ="sex" class ="textbox" left="300" top="240"></field>
<
field type="text" name ="age" class ="textbox" left="700" top="240">24</field>
</
form>

  下面,我將把它轉化成實際的ASP.NET mvc系統中的表單。首先,使用LinqtoXML將上面的XML文件轉換成XElement,代碼如下。在控制器中最好不要直接讀取文件,這里為了簡單直觀起見,就直接在Controller中讀取xml文件了。

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index()
{
XElement xml = XElement.Load(Server.MapPath("~/App_Data/form1.xml"));
ViewData["xml"] = xml;
return View();
}

  接著我們將在View中,將上面的XElement轉換成真正的HTML表單。

  在表單設計器中很難的一塊就是控件的定位。我從我提供的XML中可以看到,它里面是存放了位置信息的。這使我們想到了div的絕對布局。這個方法在這種情況下非常的適合。

  下面,我定義兩個字符串模板:

string label = " <div  style=/"left: {0}px; position: absolute; top: {1}px/">{2}</div>";
string input = "<input name=/"{0}/" type=/"{1}/" class=/"{2}/" style=/"left: {3}px; position: absolute; top: {4}px/" value=/"{5}/" />";

  label用于顯示文本信息,input用于顯示表單上的value。下面通過循環產生html腳本。

StringBuilder sb = new StringBuilder();
sb.Append(" <div style=/"height:200px/"> ");
foreach(XElement f in xml.Elements())
{
sb.Append(string.Format(label, int.Parse(f.Attribute("left").Value) - 60, f.Attribute("top").Value, f.Attribute("name").Value));
sb.Append(string.Format(input, f.Attribute("name").Value, f.Attribute("type").Value, f.Attribute("class").Value, f.Attribute("left").Value, f.Attribute("top").Value, f.Value));
}
sb.Append("</div > ");

  最后通過Response.Write(sb.ToString())輸出。

  整個View的代碼如下:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<ASP:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Home Page
</ASP:Content>
<
ASP:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% XElement xml = (XElement)ViewData["xml"]; %>
<%Html.BeginForm(); %>
   <%
string label = " <div style=/"left: {0}px; position: absolute; top: {1}px/">{2}</div>";
string input = "<input name=/"{0}/" type=/"{1}/" class=/"{2}/" style=/"left: {3}px; position: absolute; top: {4}px/" value=/"{5}/" />";
StringBuilder sb = new StringBuilder();
sb.Append(" <div style=/"height:200px/"> ");
foreach(XElement f in xml.Elements())
{
sb.Append(string.Format(label, int.Parse(f.Attribute("left").Value) - 60, f.Attribute("top").Value, f.Attribute("name").Value));
sb.Append(string.Format(input, f.Attribute("name").Value, f.Attribute("type").Value, f.Attribute("class").Value, f.Attribute("left").Value, f.Attribute("top").Value, f.Value));
}
sb.Append("</div > ");
Response.Write(sb.ToString());
%>
<input type="submit" value="Submit!" />
<%Html.EndForm(); %>
</ASP:Content>

NET技術ASP.NET MVC 2生成動態表單的一種最簡單的思路,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 果冻传媒最新视频在线观看 | 973午夜伦伦电影论片 | 99爱在线精品视频网站 | 无码国产欧美日韩精品 | 某上海少妇3P黑人完整版BD | 2021国产精品久久久久精品免费网 | 亚洲欧美中文日韩视频 | 白丝美女被狂躁免费漫画 | 亚洲精品天堂自在久久77 | 亚洲人成人毛片无遮挡 | 成年人视频免费在线播放 | 伊人久久久久久久久久 | 99热只有这里有精品 | 777米奇影院第七色色 | 青草精品国产福利在线视频 | 男人扒开添女人下部口述 | 2019一級特黃色毛片免費看 | 一本之道高清www在线观看 | 午夜4k最新福利 | 爱情岛aqdlttv| 精品国产手机视频在在线 | 久久国产亚洲精品AV麻豆 | 真人裸交有声性动态图 | 极品少妇高潮啪啪AV无码 | 果冻传媒在线观看完整版免费 | 狠狠色欧美亚洲狠狠色www | 伊人久久艹 | 无人区国产片 | 国产成人精视频在线观看免费 | 无码AV动漫精品一区二区免费 | 天天躁躁水汪汪人碰人 | 青草影院内射中出高潮-百度 | 亚洲精品国产一区二区贰佰信息网 | 果冻传媒最新视频在线观看 | 欧亚一卡二卡日本一卡二卡 | 久久精品AV无码亚洲色欲 | 青春草久久 | 国产囗交10p | 久久AV国产麻豆HD真实乱 | 亚洲午夜精品A片久久WWW解说 | 无颜之月全集免费观看 |