ASP.NET 5 MVC Core購物車應用程式有過濾器部分視圖
@model LocatorViewModel
@removeTagHelper Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper, Microsoft.AspNetCore.Mvc.TagHelpers
<form asp-antiforgery="false" name='filter' action="@Url. Action("Index", "Home, new { brand = Model.Brand
})" method="get">
@Html.DropDownList("Brand", Model.Brands.Select(
(s) => new SelectListItem() { Text = s.Text,Value = s.Value })
<input type="submit" value="按品牌搜索" />
</form>
模型被定義為:
public sealed class LocatorViewModel : ViewModelBasepublic string Brand { get; set; }
public IEnumerable<TextValuePair> Brands { get; set; }
}
public sealed class TextValuePairpublic string Text { get; set; }
public stringValue { get; set; }
從產品串列視圖中呼叫過濾器
@inherits ViewPageBase< StoreBrowseViewModel>
@model StoreBrowseViewModel
@removeTagHelper Microsoft.AspNetCore.Mvc.TagHelpers.OptionTagHelper, Microsoft.AspNetCore.Mvc.TagHelpers
<partial name="Locator" for="LocatorViewModel" />
帶有模型
public class StoreBrowseViewModel 。ViewModelBase
{
public LocatorViewModel LocatorViewModel。
這就渲染了帶有LocatorViewModel前綴的選擇元素名稱和id:
< select id="LocatorViewModel_Brand" name="LocatorViewModel. 品牌">< option selected="selected" value="> 所有</選項>
<option value="COLLEGE"> College </option>
<option value="DURABLE"/span>> 耐用</選項>
</select>/span>
如果表單提交后,在瀏覽器中搜索網址也會出現LocaforViewModel的前綴。
Home/Index? LocatorViewModel.Brand=COLLEGE
并且系結引數沒有傳遞給控制器:
public class HomeController
{
public async Task< IActionResult> Index(string brand) { . . }
}
如何洗掉沒有LocatoViewModel前綴的創建選擇元素,以便提交的url更短,品牌引數在索引方法中被填充?
uj5u.com熱心網友回復:
只需在你的主視圖中簡單地將for改為model,如下所示:
<partial name="Locator"/span> model="Model.LocatorViewModel" />
或者使用HTML幫助器:
@await Html.PartialAsync("Locator",Model.LocatorViewModel)
uj5u.com熱心網友回復:
嘗試使用類似于:
的東西 public async Task< IActionResult> Index([FromQuery(name="LocatorViewModel. 品牌")] string brand) { . }
這沒有縮短你的原始引數,但應該可以作業(我沒有測驗過)。
或者嘗試使用Jeffrey別名庫,我不知道它是否適用于最新的MVC版本,但在過去我曾使用過它:
https://www.nuget.org/packages/ActionParameterAlias/
using ActionParameterAlias;
...
[ParameterAlias("LocatorViewModel.Brand", "Brand", Order = 1)]
public async Task< IActionResult> Index(string brand) { . . }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/307741.html
標籤:
上一篇:在ASP.NETCore中上傳圖片后改變圖片元素的src屬性
下一篇:使用jquery從表中洗掉tr
