ASP.NET MVC: das Umleiten von einer Ansicht zu einer anderen

Hallo, ich bin mit dem folgenden code, um die Umleitung von einem kendo-grid zu einer anderen Seite (Ansicht):

@(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...

    }

Den Erhalt Methode auf die StockReceipt Controller:

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);
}

Und hier ist meine route Konfiguration:

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 }
    );
}

Das Problem:

.. ist, dass Sie die oben genannten Javascript-code ist nicht umleiten, es ist, dass Sie mich zu dieser URL: http://localhost:50439/StockReceipt/6

- Und reporting-die 'Yellow Screen of Death" mit diesem Fehler:

Den Parameter-dictionary enthält einen null-Eintrag für den parameter 'stockReceiptId' nicht-nullable-Typ 'System.Int32' Methode 'System.Web.Mvc.ActionResult Update(Int32)' in 'WorcesterMarble.Controller.StockReceiptController'. Einen optionalen parameter müssen Sie einen Verweis geben, eine nullable-Typ, oder erklärt werden als optionale parameter.
Parameter name: Parameter

Wo 6 ist die ID.

Wenn ich entfernen Sie das id-element geworden:

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

Es funktioniert, aber ich brauche die ID, weil ich will, um das laden der ausgewählten "ViewModel" in die zielansicht.

Frage ich mich, was mache ich falsch?!

Habe ich ausprobiert, aber ohne Erfolg.:

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

InformationsquelleAutor t_plusplus | 2014-01-24

Schreibe einen Kommentar