私は比較的単純な Web アプリケーションに取り組んでおり、スーパーバイザーは、Knockout、MVC、および Bootstrap を組み合わせて使用することを勧めました。残念ながら、おそらくプロジェクトの些細な部分で行き詰まってしまいました。
私は多くの Knockoutチュートリアルを見てきましたが、最も単純なものを模倣しようとしてきました。
残念ながら、私のデータバインディングはどれも機能していないようです。オブザーバブルは割り当てられた値を決して保持しません。
私も検索中にこのスレッドに出くわし、それを模倣しようとしましたが、役に立ちませんでした. 基本的に、Visual Studio MVC4 で Knockout データ バインディングを適切に実装する方法を知りたいだけです。これが私の HTML コードです。その多くは、上記のスレッドから切り取ったものです。
@model FluidBedSimulation.Models.BedState
@using Newtonsoft.Json
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@if (false)
{
<script src="../../Scripts/jquery-1.9.1.js" type="text/javascript"></script>
<script src="../../Scripts/knockout-2.2.0.js" type="text/javascript"></script>
}
<script src="@Url.Content("~/Scripts/jquery-1.9.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/knockout-2.2.0.js")" type="text/javascript"></script>
<script type="text/javascript">
this.BedMass = ko.observable(1);
this.BedWaterMass = ko.observable(1);
this.binderFraction = ko.observable(1);
(function () {
var model = '@Html.Raw(Json.Encode(Model))';
var viewModel = ko.mapping.fromJS(model);
ko.applyBindings(viewModel);
});
</script>
@*grab values from the view model directly*@
<p>Bed Weight: <strong data-bind="text: BedMass" id="BedMass"></strong></p>
<p>H2O Bed Weight: <strong data-bind="text: BedWaterMass" id="BedWaterMass"></strong></p>
<p>Fraction of Binder in Spray Solution: <strong data-bind="text: binderFraction" id="binderFraction"></strong></p>
<p>
Enter the Bed Mass:
<input data-bind="value: BedMass" />
@*Html.TextBoxFor(model => model.BedMass, new { data_bind = "value: BedMass" })*@
</p>
<p>
Enter the H2O Mass in the Bed:
@Html.TextBoxFor(model => model.BedWaterMass, new { data_bind = "value: BedWaterMass" })
</p>
<p>
Enter the Fraction of Binder in the Spray Solution:
@Html.TextBoxFor(model => model.binderFraction, new { data_bind = "value: binderFraction" })
</p>
<button data-bind="click: Simulate">Simulate</button>
これが私が持っている単純なモデルです...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace FluidBedSimulation.Models
{
public class BedState
{
public double BedMass { get; set; }
public double BedWaterMass { get; set; }
public int binderFraction { get; set; }
public double EvapRate { get; set; }
public double SprayRate { get; set; }
public double AirTemp { get; set; }
public double AirFlow { get; set; }
}
}
そしてシンプルなコントローラー。派手なものはありません。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FluidBedSimulation.Models;
using Newtonsoft.Json;
namespace FluidBedSimulation.Controllers
{
public class SimulationController : Controller
{
//
// GET: /Simulation/
public ActionResult Index()
{
BedState state = new BedState
{
BedMass = 0,
BedWaterMass = 0,
binderFraction = 0,
AirFlow = 0,
AirTemp = 0,
EvapRate = 0,
SprayRate = 0
};
FluidBed bed = new FluidBed
{
FluidBedStates = new List<BedState> { state }
};
return View(state);
}
}
}
皆さんが私にこのことを始めさせていただければ、本当に感謝しています。そうでなければ、古き良き JQuery と html に固執する必要があるかもしれません。前もって感謝します!