繁体   English   中英

将值从View传递给Controller,我错过了什么?

[英]Passing value from View to Controller, what am I missing?

我认为我有以下几点:

@Html.DropDownList("ProductionOrder", null, htmlAttributes: new { @class = "form-control", @id = "ProductionOrder" })

<div class="col-lg-6" id="ProductionOrderDetails"></div>

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")

<script type="text/javascript">
    $(function () {
        $("#ProductionOrder").change(function () {
            var po = $("#ProductionOrder").val().toString();
            //This alert is for debug purpose only
            alert(po);
            $.get('/wetWashRequests/GetDetails/' + po, function (data) {
                $('#ProductionOrderDetails').html(data);
                $('#ProductionOrderDetails').fadeIn('fast');
            });
        })
    })
</script>

然后我的控制器中有以下内容:

public PartialViewResult GetDetails(string PONumber)
    {            
        var details = db.vwProductionOrderLookups.Where(x => x.No_ == PONumber).SingleOrDefault();
        return PartialView("_ProductionOrderDetails", details);
    }

我不明白为什么它没有将值传递给控制器​​或为什么,当我在浏览器中手动输入URL时,如此( http://localhost:51702/wetWashRequests/GetDetails/WO033960 ),它也不会将其分配给参数,因此不返回任何数据。

我错过了什么? 我以为我走在正确的轨道上但......

您需要编辑路由配置以允许类型为{controller}/{action}/{PONumber} 否则,您也可以通过查询字符串发送PONumber ,以便您的URL如下所示:

http://localhost:51702/wetWashRequests/GetDetails?PONumber=WO033960

使用URL.Action()方法

var url= "@Url.Action("wetWashRequests","GetDetails")"+"?PONumber="+po;
$.get(url,function(data)
{
});

我认为这个修改会起作用:

$.get('/wetWashRequests/GetDetails?PONumber=' + po,

请注意@malkam总是使用的评论: @Url.Action(controller,action)

var url= "@Url.Action("wetWashRequests","GetDetails")"+"?PONumber="+po;

澄清:

在您的app-start中,您可能拥有默认路由:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
    );

这意味着您可以使用以下URL:

/wetWashRequests/GetDetails/999

但随后999绑定了一个名为id的参数。

对于你需要的所有其他变量

/wetWashRequests/GetDetails?someParameter=999

句法。

或者,您可以修改路由。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM