如何在C#中保存对视图模型的更改?

时间:2017-04-20 18:42:05

标签: c# asp.net-mvc razor

我目前正在读取配置文件中的值并将值设置为视图模型。我在文本框中的UI上显示它们。我希望用户能够编辑/更改文本框中的值,并能够点击保存按钮,并将更改保存到视图模型和配置文件中。我知道控制器中需要某种类型的Get / Post方法,但我不完全确定控制器的外观。我根本没有把它连接到数据库。

查看:

 @using (Html.BeginForm())
{
    <fieldset>
        <div class="row">
            <div class="col-md-1">Logging Directory:</div>
            <div class="col-md-2">@Html.EditorFor(model => Model.loggingDirectory)</div>

            <div class="col-md-1">Archive Directory:</div>
            <div class="col-md-2">@Html.EditorFor(model => Model.archiveDirectory)</div>

            <div class="col-md-1">Time Between Alarms:</div>
            <div class="col-md-2">@Html.EditorFor(model => Model.timeBetweenAlarms)</div>

            <div class="col-md-1">Time to Archive Logs:</div>
            <div class="col-md-2">@Html.EditorFor(model => Model.timeToArchive)</div>

            <div class="col-md-1">Situator IP:</div>
            <div class="col-md-2">@Html.EditorFor(model => Model.situatorIP)</div>

            <div class="col-md-1 ">Situator Port:</div>
            <div class="col-md-2 ">@Html.EditorFor(model => Model.situatorPort)</div>

            <div class="col-md-1 ">Clean Up:</div>
            <div class="col-md-2 ">@Html.EditorFor(model => Model.timeToCleanUp)</div>

            <div class="col-md-1 ">Coorelation Zone:</div>
            <div class="col-md-2">@Html.EditorFor(model => Model.coorelationZone)</div>
        </div>
        <div class="row submitButton">
            <button class="btn btn-primary" type="submit">Save</button>
        </div>
    </fieldset>
}

查看模型

public class ConfigurationViewModel
{
    public string loggingDirectory { get; set; }
    public string archiveDirectory { get; set; }
    public string situatorIP { get; set; }
    public string situatorPort { get; set; }
    public string timeBetweenAlarms { get; set; }
    public string timeToArchive { get; set; }
    public string sightlogixIP { get; set; }
    public string timeToCleanUp { get; set; }
    public string coorelationZone { get; set; }
}

控制器:

public ActionResult Index()
    {
        ConfigurationViewModel cvm = new ConfigurationViewModel();


        cvm.loggingDirectory = ConfigurationManager.AppSettings["loggingDirectoryPath"];
        cvm.archiveDirectory = ConfigurationManager.AppSettings["archiveDirectoryPath"];
        cvm.situatorIP = ConfigurationManager.AppSettings["SituatorIP"];
        cvm.situatorPort = ConfigurationManager.AppSettings["SituatorPort"];
        cvm.timeBetweenAlarms = ConfigurationManager.AppSettings["TimeIncrementBetweenalarmsInSeconds"];
        cvm.timeToArchive = ConfigurationManager.AppSettings["timeIncrementForArchivingLogFilesInHours"];
        cvm.sightlogixIP = ConfigurationManager.AppSettings["SightLogixIP"];
        cvm.timeToCleanUp = ConfigurationManager.AppSettings["timeIncrementForCleaningUp"];
        cvm.coorelationZone = ConfigurationManager.AppSettings["correlationZoneLengthInFeet"];

        return View(cvm);
    }


    [HttpGet]
    public ActionResult Edit()
    {

        return;
    }


    [HttpPost]
    public ActionResult Edit()
    {

        return;
    }

1 个答案:

答案 0 :(得分:0)

在“获取编辑方法”中传递视图模型

[HttpGet]
public ActionResult Edit()
{

    ConfigurationViewModel cvm = new ConfigurationViewModel();


    cvm.loggingDirectory = ConfigurationManager.AppSettings["loggingDirectoryPath"];
    cvm.archiveDirectory = ConfigurationManager.AppSettings["archiveDirectoryPath"];
    cvm.situatorIP = ConfigurationManager.AppSettings["SituatorIP"];
    cvm.situatorPort = ConfigurationManager.AppSettings["SituatorPort"];
    //...

    return View(cvm);
}

将更新的视图模型发送到发布编辑方法并对其执行操作

[HttpPost]
public ActionResult Edit(ConfigurationViewModel cvm)
{

    ConfigurationManager.AppSettings["archiveDirectoryPath"] = cvm.archiveDirectory;
    ConfigurationManager.AppSettings["SituatorIP"] = cvm.situatorIP;
    ConfigurationManager.AppSettings["SituatorPort"]= cvm.situatorPort;
    //...
    return View(cvm);
}

您的剃须刀视图会将更新的数据提交到您的帖子编辑方法

@using (Html.BeginForm("Edit", "Your controller", FormMethod.Post))
{
    ....
}