在我的專案中,我想從控制器中傳遞一個以上的引數(ID和描述)給我的視圖。
這是我的專案結構:
ProductController:
ProductController:
public IActionResult DettaglioDescrizione(int id, string descrizione)。
{
ViewData["ProductId"] = id;
ViewData["ProductDescription"] = descrizione;
return View("Details") 。
}
Details.cshtml視圖:
<div class="text-enter">
<h1 class="display-4"> Prodotti</h1>
<p>Id prodotto: @ViewData["ProductId"]</p>
<p>產品描述。@ViewData["ProductDescription"]</p>
</div>
我知道,我必須在Startup.cs中修改我的模式。如果我以這種方式修改,它就能正常作業:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
名稱。"default"。
模式。"{controller=Home}/{action=Index}/{id?}/{descrizione?}")。)
});
我的問題是:有什么更好的方法可以不為每個引數添加"/"?
uj5u.com熱心網友回復:
在模型系結中,有三個系結源
你現在所做的是來自路由值,也許你可以使用查詢字串/1?description=value,或者你可以做httppost并從表單中獲取值。
uj5u.com熱心網友回復:
如果你想從控制器到動作或者從動作到控制器傳遞多個引數,你可以嘗試創建一個Model.Action可以通過表單向控制器傳遞資料,Action向視圖回傳一個模型,這樣你就不需要通過路由或ViewData傳遞多個引數。
模型:
public class Product
{
public int ProductId { get; set; }
public string describedzione { get; set; }
行動:
public IActionResult DettaglioDescrizione(Product product)。
{
return View("Details",product)。
}
細節視圖:
@model Product
<div class="text-center"/span>>
<h1 class="display-4"> Prodotti</h1>
<p>Id prodotto: @Model.ProductId</p>
<p>產品的描述。@Model.ProductDescription</p>
</div>
查看:
@model Product
<form method="post" asp-action="DettaglioDescrizione">
<div class="form-group">
<標簽asp-for="ProductId" class="controll-label"> </label>
<輸入asp-for="ProductId" class="form-control" />
</div>
<div class="form-group">
<標簽asp-for="ProductDescription" class="controll-label"> </label>
<輸入asp-for="ProductDescription" class="form-control" />
</div>
<input type="submit" value="submit" />
</form>
uj5u.com熱心網友回復:
如果你不想改變你的路由定義,使用查詢字串引數。如果你也想在你的動作方法中沒有太多引數,請使用帶有[FromQuery]注解的自定義類:
public class ProductController : Controller
{
public IActionResult DettaglioDescrizione([FromRoute] id, [FromQuery] MyClassDto param)。
{
ViewData["ProductId"] = id;
ViewData["ProductDescription"] = descrizione;
return View("Details") 。
}
}
public class MyClassDto
{
public int Description { get; set; }
路線def.
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
名稱。"default"。
模式。"{controller=Home}/{action=Index}/{id?}")。)
});
使用方法:
https://localhost/Product/DettaglioDescrizione/7? Description=Hello
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/311770.html
標籤:
下一篇:Laravel登錄設定驗證資訊

