Tôi khá mới đối với MVC và đang gặp khó khăn khi định tuyến khi cố gắng chuyển nhiều thông số qua URL.Chuyển nhiều thông số từ url đến html.actionlink
Từ một trang với URL: /PersonCAFDetail/Index/3?memberid=4
... Tôi đang cố gắng để có được một Html.ActionLink thiết để trỏ đến Create hành động như vậy mà id = 3 và memberid = 4.
Sau khi đọc một số bài viết tương tự có vẻ như những điều sau đây nên làm việc:
@Html.ActionLink("Create New", "Create", null, new { memberid = "memberid" })
Tuy nhiên, điều này dẫn đến một URL được tạo ra như sau:
<a href="/PersonCAFDetail/Create/3" memberid="memberid">Create New</a>
Tôi có một bộ tuyến đường lên dưới dạng:
routes.MapRoute(
name: "PersonCAFDetail",
url: "PersonCAFDetail/Create/{id}/{memberid}",
defaults: new { controller = "PersonCAFDetail", action = "Create", id = "@\d+", memberid = @"\d+" }
);
Bộ điều khiển chấp nhận hai tham số như sau:
public ActionResult Create(int id, int memberid)
{
int cafID = id;
int personID = memberid;
ViewBag.detailTypeID = new SelectList(db.tCAFDetailTypes, "detailTypeID", "detailType");
ViewBag.cafID = new SelectList(db.tFamilyCAFs, "cafID", "issues");
ViewBag.personID = new SelectList(db.tPersons, "personID", "forename");
return View();
}
Bất kỳ trợ giúp nào được đánh giá cao.
------- chỉnh sửa cho mô hình ----------
namespace WhatWorks.Models
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;
public partial class tPersonCAFDetail
{
[Key, HiddenInput(DisplayValue=false)]
public int cafID { get; set; }
[Key, HiddenInput(DisplayValue = false)]
public int personID { get; set; }
[Key, HiddenInput(DisplayValue = false)]
public int detailTypeID { get; set; }
[Required, DataType(DataType.MultilineText)]
public string notes { get; set; }
public string FullName
{
get
{
return tPerson.forename + " " + tPerson.surname;
}
}
public virtual tCAFDetailType tCAFDetailType { get; set; }
public virtual tFamilyCAF tFamilyCAF { get; set; }
public virtual tPerson tPerson { get; set; }
}
}
Tôi đang cố gắng chuyển tham số để các giá trị sẽ thay đổi. Tôi cần biết cách chuyển các giá trị tham số vào "id" và "memberid". Nếu cú pháp tuyến đường không có ID được đặt bằng ký tự đại diện có chữ số hay không? – melkisadek
Ok, vui lòng cho biết cách bạn xác định mô hình hoặc ViewBag thành chế độ xem – Mate
Nếu sử dụng chế độ xem Được nhập mạnh, hãy kiểm tra dòng đầu tiên trong .cshtml ... @model "YourViewModel". Hoặc nếu bạn gửi giá trị trong ViewBag giống như ViewBag.MemberID? – Mate