ASP.NET MVC使用表单数据输入来创建xml

时间:2013-10-30 20:07:11

标签: asp.net-mvc

我有一个包含多个文本框,复选框和提交按钮的视图。在单击提交时,需要将数据传递给DataController,DataController将创建Model对象并将对象序列化为xml。我应该如何将所有这些数据传递给控制器​​?这就是我现在所拥有的。

Data.cshtml

<legend>Enter Categories</legend>   
<div class="row">
    <div class="col-md-2 col-md-pull">
        Name:
    </div>
    <div class="col-md-8 col-md-push">
        <input id="NameTextBox" type="text" placeholder="Enter a name ..." class="form-control" required="required" autofocus="autofocus" />
    </div>
</div>

<br />

<div class="row event-selection">
    <div class="col-md-3">
        <input id="Data1" type="text" class="form-control" placeholder="FirstName1" />
    </div>
    <div class="col-md-3">
        <input id="Data2" type="text" class="form-control" placeholder="LastName1" />
    </div>
    <div class="col-md-3">
        <input id="Data3" type="text" class="form-control" placeholder="FirstName2" />
    </div>
    <div class="col-md-3">
        <input id="Data4" type="text" class="form-control" placeholder="LastName2" />
    </div>
</div>

<br />

<div class="row">
    <button class="btn"><img src="~/Content/Images/Add.PNG" /></button>
    Add new category
</div>

<br />
<br />

<legend>Select Class</legend>
<div>
    <label class="checkbox-inline">
        <input type="checkbox" />
        Primary
    </label>
    <label class="checkbox-inline">
        <input type="checkbox" />
        Secondary
    </label>
    <label class="checkbox-inline">
        <input type="checkbox" />
        High
    </label>
    <label class="checkbox-inline">
        <input type="checkbox" />
        Low
    </label>
    <label class="checkbox-inline">
        <input type="checkbox" />
        B
    </label>
    <label class="checkbox-inline">
        <input type="checkbox" />
        G
    </label>
    <label class="checkbox-inline">
        <input type="checkbox" />
        P
    </label>
</div>

<br />
<br />

<legend>Select Area</legend>
<select class="dropdown" id="AreaDropDown">
    <option class="dropdown-header">Select a area ...</option>
</select>

<br />
<br />

<legend>Download</legend>
<input type="submit" class="btn btn-primary" value="Download Data" onclick="location.href='@Url.Action("Download", "Data")'" />

DataController.cs

public class DataController : Controller
{
    [HttpPost]
    public ActionResult Download() // How should the form data get passed into this?
    {

        // Create objects using form data passed

        return new XmlResult<DataModel.XmlData>()
        {
            Data = dataModelInstance
        };
    }
}

DataModel.cs

public class DataModel
{
    [XmlRoot("Root")]
    public class Person
    {
        [XmlElement("Name")]
        public Name Name { get; set; }
    }

    [SerializableAttribute()]
    public class Name
    {
        [XmlElement("FirstName")]
        public string FirstName { get; set; }
        [XmlElement("LastName")]
        public string LastName { get; set; }
    }
...
}

1 个答案:

答案 0 :(得分:0)

创建一个附加对象/视图模型,并将其用于表单/控制器映射。然后,您可以填充各种XML对象。您需要将name属性分配给各种表单标记以完成映射。

public class MyViewModel
{
    public Name Name { get; set; }
    ...
}

public class DataController : Controller
{
    [HttpPost]
    public ActionResult Download(MyViewModel myViewModel)
    {
        ...
    }
}

<legend>Enter Categories</legend>   
<div class="row">
    <div class="col-md-2 col-md-pull">
        Name:
    </div>
    <div class="col-md-8 col-md-push">
        <input id="NameTextBox" type="text" name="Name" ... />
    </div>
</div>

从您的问题中不清楚您是否需要其他帮助来创建XML或只是表单/控制器映射?