簡體   English   中英

.NET MVC:如何在 Object 中<a @url.action()>發送 Object?</a>

[英].NET MVC: How in <a @Url.Action()> to send an Object In an Object?

對所有人都有好處:)

我想輕松提交一個model進行數據過濾。

為了快速排序,我寫了數據排序的標簽......

當我點擊鏈接時,地址欄變成這樣 -> "&FilterData=Project.Web.Models.FilterData"

localhost/User?PageNum=1&SortOrder=NameAsc&FilterData=Project.Web.Models.FilterData
<a href="@Url.Action("Index", "User", new FilterRequest(filter, sort, pagination))"> First Name </a>

這里是理解的代碼)

過濾請求.cs

public class FilterRequest
{
     public int PageNumber { get; set; } = 1;

     public SortType SortOrder { get; set; } = SortType.None;

     public FilterData FilterData { get; set; }
}

過濾數據.cs

public class FilterData
{
   public string FirstName { get; set; }

   public string MiddleName { get; set; }

   public string LastName { get; set; }
}

怎么看到FilterData字段是一個object,它的字段沒有顯示出來?

這就是我將數據接收到控制器的方式)

用戶控制器.cs

public class UserController : Controller
{
    public IActionResult Index(FilterRequest request)
    {

    }
}

請幫我弄清楚..顯示來自嵌套object的數據:)

當我點擊鏈接時,地址欄變成這樣 -> "&FilterData=Project.Web.Models.FilterData"

如何在 Object 中發送 Object?

為了實現通過<a>標簽將復雜數據傳遞給 controller 操作的要求,並使 model 綁定正常工作,您可以嘗試以下代碼片段。

@{
    ViewData["Title"] = "Home Page";
    var pagination = 1;
    var sort = SortType.NameAsc;
    var filter = new FilterData { FirstName = "fn", MiddleName = "mn", LastName = "ln" };

    var parms = new Dictionary<string, string>
    {
        { "PageNumber", pagination.ToString() },
        { "SortOrder", SortType.NameAsc.ToString() },
        { "FilterData.FirstName",filter.FirstName},
        { "FilterData.MiddleName",filter.MiddleName},
        { "FilterData.LastName",filter.LastName}
    };
}

    <a asp-controller="Home" asp-action="Index" asp-all-route-data="parms">First Name</a>

查詢字符串可能如下所示:

?PageNumber=1&SortOrder=NameAsc&FilterData.FirstName=fn&FilterData.MiddleName=mn&FilterData.LastName=ln

測試結果

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM