Description
The sample demonstrates how parameters are passed to the server methods of controller.
public class ParametersToServerModel { public int Number { get; set; } public string String { get; set; } public void Increment(int value) { Number += value; } public void AddToString(string s, int count) { for (int i = 0; i < count; i++) String += s; } }
@using PerpetuumSoft.Knockout @model KnockoutMvcDemo.Models.ParametersToServerModel @{ var ko = Html.CreateKnockoutContext(); } Number : @ko.Html.Span(m => m.Number)<br /> @ko.Html.Button("Inc 1", "Increment", "ParametersToServer", new { value = 1 }) @ko.Html.Button("Inc 2", "Increment", "ParametersToServer", new { value = 2 }) @ko.Html.Button("Inc 3", "Increment", "ParametersToServer", new { value = 3 }) <br /> <br /> String: @ko.Html.Span(m => m.String)<br /> @ko.Html.HyperlinkButton("Add 1 'a'", "AddToString", "ParametersToServer", new { letter = 'a', count = 1 })<br /> @ko.Html.HyperlinkButton("Add 2 'b'", "AddToString", "ParametersToServer", new { letter = 'b', count = 2 })<br /> @ko.Html.HyperlinkButton("Add 3 'c'", "AddToString", "ParametersToServer", new { letter = 'c', count = 3 }) @ko.Apply(Model)
public class ParametersToServerController : BaseController { public ActionResult Index() { InitializeViewBag("Parameters to server"); return View(new ParametersToServerModel()); } public ActionResult Increment(ParametersToServerModel model, int value) { model.Increment(value); return Json(model); } public ActionResult AddToString(ParametersToServerModel model, char letter, int count) { model.AddToString(letter + "", count); return Json(model); } }
Number : <span data-bind="text : Number"></span><br /> <button data-bind="click : function() {executeOnServer(viewModel, '/ParametersToServer/Increment?value=1');}">Inc 1</button> <button data-bind="click : function() {executeOnServer(viewModel, '/ParametersToServer/Increment?value=2');}">Inc 2</button> <button data-bind="click : function() {executeOnServer(viewModel, '/ParametersToServer/Increment?value=3');}">Inc 3</button> <br /> <br /> String: <span data-bind="text : String"></span><br /> <a data-bind="click : function() {executeOnServer(viewModel, '/ParametersToServer/AddToString?letter=a&count=1');}" href="#">Add 1 'a'</a><br /> <a data-bind="click : function() {executeOnServer(viewModel, '/ParametersToServer/AddToString?letter=b&count=2');}" href="#">Add 2 'b'</a><br /> <a data-bind="click : function() {executeOnServer(viewModel, '/ParametersToServer/AddToString?letter=c&count=3');}" href="#">Add 3 'c'</a> <script type="text/javascript"> var viewModelJs = {"Number":0,"String":""}; var viewModel = ko.mapping.fromJS(viewModelJs); ko.applyBindings(viewModel); </script>