首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中保存对视图模型的更改?

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

Stack Overflow用户
提问于 2017-04-20 18:42:04
回答 1查看 1.2K关注 0票数 0

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

视图:

代码语言:javascript
复制
 @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>
}

视图模型

代码语言:javascript
复制
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; }
}

控制器:

代码语言:javascript
复制
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;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-20 18:55:41

Get编辑方法中的传递视图模型

代码语言:javascript
复制
[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);
}

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

代码语言:javascript
复制
[HttpPost]
public ActionResult Edit(ConfigurationViewModel cvm)
{

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

和您的剃刀视图,它将提交更新的数据到您的Post编辑方法

代码语言:javascript
复制
@using (Html.BeginForm("Edit", "Your controller", FormMethod.Post))
{
    ....
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43527463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档