首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET MVC:从一个视图重定向到另一个视图

ASP.NET MVC:从一个视图重定向到另一个视图
EN

Stack Overflow用户
提问于 2014-01-24 16:27:43
回答 2查看 21.3K关注 0票数 5

嗨,我正在使用以下代码将kendo网格重定向到另一个页面(查看):

代码语言:javascript
运行
复制
@(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:

代码语言: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控制器上的接收方法是:

代码语言:javascript
运行
复制
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);
}

这是我的路由配置:

代码语言:javascript
运行
复制
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代码不是重定向的,而是带我到以下网址: http://localhost:50439/StockReceipt/6

并用这个错误报告“死亡的黄屏”:

参数字典包含一个空项,用于'WorcesterMarble.Controllers.StockReceiptController'.中的方法“System.Web.Mvc.ActionResult更新(Int32)”的非空类型“System.Int32”参数“System.Web.Mvc.ActionResult”。可选参数必须是引用类型、可空类型,或者声明为可选参数。参数名称:参数

其中6是身份证。

如果我移除id元素如下:

代码语言:javascript
运行
复制
window.location.href = "@Url.Action("Update","StockReceipt")"

它可以工作,但我需要ID,因为我希望在目标视图中加载所选的'ViewModel‘。

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

我试过用这个,但没有用。

代码语言:javascript
运行
复制
window.location.href = @Url.RouteUrl("Default", new { @Controller = "StockReceipt", @Action = "Update"}) + '//' + stockReceiptId;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-24 16:44:21

像这样解决:

代码语言: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=" + stockReceiptId; 
    }

更多细节here

票数 7
EN

Stack Overflow用户

发布于 2014-01-24 16:44:14

我相信你想要的是:

代码语言:javascript
运行
复制
 window.location.href = "@Url.Action("Update","StockReceipt", new { id = 6 })"

http://msdn.microsoft.com/en-us/library/dd505151%28v=vs.118%29.aspx

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21337608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档