加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC:从一个视图重定向到另一个视图

发布时间:2020-12-16 03:59:28 所属栏目:asp.Net 来源:网络整理
导读:您好我使用以下代码从kendo网格重定向到另一个页面(查看): @(Html.Kendo().GridWM.ViewModels.StockReceiptsGridViewModel() .Name("Grid") .ToolBar(toolbar = toolbar.Template("a class='k-button k-button-icontext' onclick='addMaterialPopup()' href
您好我使用以下代码从kendo网格重定向到另一个页面(查看):

@(Html.Kendo().Grid<WM.ViewModels.StockReceiptsGridViewModel>()
    .Name("Grid")
    .ToolBar(toolbar => toolbar.Template("<a class='k-button k-button-icontext' onclick='addMaterialPopup()' href='#'></span>Create Stock Receipt</a>"))
    .Columns(columns =>
    {
        columns.Bound(p => p.StockReceiptID);
        columns.Bound(p => p.SupplierName);
        columns.Bound(p => p.Product);
        columns.Bound(p => p.Dimensions);
        columns.Bound(p => p.Quantity);
        columns.Bound(p => p.QuantityReserved);
        columns.Bound(p => p.PurchaseNumber);
        columns.Bound(p => p.Cost);
        columns.Bound(p => p.PhotosLink).Title("").ClientTemplate("<a href='/Photos/index?StockReceiptID=#=StockReceiptID#'>#=GetText()#</a>");
        columns.Command(command => command.Custom("Edit").Click("editreceipt"));

    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Batch(false)
        .Model(model => model.Id(p => p.StockReceiptID))
                    .Read(read => read.Action("Read","StockReceiptsGrid").Data("ExtraData"))
  )
)

使用Javascript:

function editreceipt(e) {
    e.preventDefault();
    var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
    var stockReceiptId = dataItem.StockReceiptID;

    window.location.href = "@Url.Action("Update","StockReceipt")"+"/"+stockReceiptId; // Problem code...

    }

StockReceipt控制器上的接收方法是:

public ActionResult Update(int stockReceiptId)
{
   var stockReceipt = _stockReceiptRepository.GetAllStockReceipts().ToList().Where(r => r.StockReceiptID == stockReceiptId);

    var model = new StockReceiptViewModel();


    model.Notes = stockReceipt.First().Notes;



    return View("Index",model);
}

这是我的路线配置:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

问题:

..是上面的Javascript代码没有重定向,它带我到这个URL:http:// localhost:50439 / StockReceipt / 6

并使用此错误报告“黄色死亡屏幕”:

参数字典包含’WorcesterMarble.Controllers.StockReceiptController’中方法’System.Web.Mvc.ActionResult Update(Int32)’的非可空类型’System.Int32’的参数’stockReceiptId’的空条目.可选参数必须是引用类型,可空类型,或者声明为可选参数.
参数名称:参数

其中6是ID.

如果我删除id元素变为这样:

window.location.href = "@Url.Action("Update","StockReceipt")"

它工作,但我需要ID,因为我想在目标视图中加载选定的’ViewModel’.

我不知道我做错了什么?!

我试过用这个,但无济于事:

window.location.href = @Url.RouteUrl("Default",new { @Controller = "StockReceipt",@Action = "Update"}) + '//' + stockReceiptId;

解决方法

解决方式如下:

function editreceipt(e) {
    e.preventDefault();
    var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
    var stockReceiptId = dataItem.StockReceiptID;

    window.location.href = "@Url.Action("Update","StockReceipt")?stockReceiptId=" + stockReceiptId; 
    }

更多细节here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读