如何使用@Ko.Html.Button 将模型属性值发送到 K-MVC 中的控制器方法

Posted

技术标签:

【中文标题】如何使用@Ko.Html.Button 将模型属性值发送到 K-MVC 中的控制器方法【英文标题】:How to send model property value to controller method in K-MVC using @Ko.Html.Button 【发布时间】:2015-04-28 19:56:19 【问题描述】:

我正在尝试将 StockDate 的值发送到控制器方法。我得到空值。 http://knockoutmvc.com/ParametersToServer

根据上面的链接,如果我传递如下静态值。我可以获得价值,但是当我使用 Model.Property 时,我总是得到 Null。

@ko.html.Button("Inc 3", "Increment", "ParametersToServer", new  value = 3 )

下面是代码..

查看代码-

    @using PerpetuumSoft.Knockout
@model OpManWeb.ViewModel.Inventory.TransactionHistory

@
    var ko = Html.CreateKnockoutContext();

@
    ViewBag.Title = "Add Stock";



<script src="~/Scripts/perpetuum.knockout.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

@using (ko.Html.Form("SaveStock", "Inventory"))

    <div class="row">
        <div class="col-md-3 col-lg-3 clmargin">
                <div class="form-group  col-md-4 zeropadding div2adjustments">
                    @Html.LabelFor(m => m.StockDate, new  @class = "fieldtext" )
                </div>
                <div class="col-md-8 div2adjustments">
                    @ko.Html.TextBox(m => m.StockDate, new  @class = "form-control input-sm fieldtextinput ", 
                @id="stockdatepicker" )
                </div>
            </div>
    </div>

     @ko.Html.Button("Cancel", "sample1", "Inventory", new  value = Model.StockDate, new  @class = "btn btn- primary maxheightbtn col-md-12", @id = "btn" )

型号代码-

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace OpManWeb.ViewModel.Inventory

    public class TransactionHistory
    
        [DisplayName("Stock Date")] 
        public string StockDate
        
            get;
            set;
        
    

控制器代码-

   public ActionResult sample1(string value)

    return Json(value);        

对于控制器中的字符串值,我总是得到空值。 任何人都可以遇到这样的问题..? 帮助..!! 提前谢谢..!!

【问题讨论】:

您是否尝试在控制器中访问model.StockDate 是的,我的控制器争论中的字符串值是 null .. 那是因为您没有将带有键 value 的键:值对传递给控制器​​。 我们怎样才能做到这一点...?你能写出这个问题的答案吗? 我知道我们可以实现,但我不想使用视图模型。我想使用传递给@ko.Html.Button..和控制器内部的字符串值的参数值来实现这一点 【参考方案1】:

您只能使用@ko.Html.Button 发回额外的静态参数。

但是,您可以通过向控制器操作添加model 参数来获取整个客户端模型对象(始终由 K-MVC 发送)。

所以你可以通过修改你的控制器操作来获得当前的model.StockDate

public ActionResult sample1(TransactionHistory model)

    return Json(model.StockDate);        

【讨论】:

以上是关于如何使用@Ko.Html.Button 将模型属性值发送到 K-MVC 中的控制器方法的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent - 如何将范围查询内的计算值作为模型列或集合属性返回

如何使用包含模型中的属性来创建 where 条件?

如何使用 Knockout Mapping 将一个属性映射到另一个属性?

使用 Spring WebFlux 路由器功能时如何获取模型属性?

如何在使用自动映射器时将属性名称的 jsonproperty 设置为 dto?

MVC 4如何将模型属性列表从视图传递给Action