タブコントロールで多くのビューを同時に開くことができるアプリケーションがあります。
私はすべてのビューでノックアウトを使用しています。
以下のような2つのアクションがあります。
public ActionResult Edit()
{
ViewData["Mode"] = "Edit";
return PartialView("AddOrEdit", new ParametroModel() { Codigo = "banco", Descricao = "String de conexao do banco de dados" });
}
public ActionResult Add()
{
ViewData["Mode"] = "Add";
return PartialView("AddOrEdit", new ParametroModel() { Codigo = "banco", Descricao = "String de conexao do banco de dados" });
}
どちらも同じ部分ビュー「AddOrEdit」を共有しています。私のビューに従ってください:
@model CCL.Apoio.Web.Models.ParametroModel
@{
var isEdit = ViewData["Mode"] == "Edit";
var isAdd = ViewData["Mode"] == "Add";
}
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "formParametro" }))
{
@Html.Partial("_FormValidation")
<fieldset>
<legend>Dados do parâmetro</legend>
<dl>
<dt>
<label>Código</label></dt>
@if (isAdd)
{
<dd>@Html.TextBoxFor(m => m.Codigo)</dd>
}
else
{
<dd>@Html.DisplayFor(m => m.Codigo)</dd>
}
</dl>
<dl>
<dt>
<label>Descrição</label></dt>
<dd>
@Html.TextAreaFor(m => m.Descricao)</dd>
</dl>
<dl>
<dt>
<label>Valor</label></dt>
<dd>
@Html.TextAreaFor(m => m.Valor)
</dd>
</dl>
<dl>
<dt> </dt>
<dd>
<input type="submit" value="Cadastrar" onclick="" /></dd>
</dl>
</fieldset>
}
<script type="text/javascript">
@if (isEdit)
{
<text>
var parametroEditModel = ko.mapping.fromJSON('@Html.Raw(Json.Encode(Model))');
parametroEditModel.Save = function () {
ModuloHelper.ajaxPut('/Api/Parametros', parametroEditModel); //Post data
};
ko.applyBindings(parametroEditModel, document.getElementById("formParametro"));
</text>
}
else if (isAdd)
{
<text>
var parametroAddModel = ko.mapping.fromJSON('@Html.Raw(Json.Encode(Model))');
parametroAddModel.Save = function () {
ModuloHelper.ajaxPost('/Api/Parametros', parametroAddModel);
};
ko.applyBindings(parametroAddModel, document.getElementById("formParametro"));
</text>
}
</script>
私の見解では、監視可能なビューモデルが 2 つあります。1 つは「追加」モード用で、もう 1 つは「編集」モード用です。両方のモードで同じビューモデルを使用することはできません。両方のアクションが開かれているときに、クライアント側で同じ名前のオブジェクトが 2 つあるためです。私はこのように間違っていますか?
それを達成するためのより良いアプローチであるかどうかを知りたいです。私が望むことを行うための別のより良い方法を提案できる体はありますか?
わかりました。