gpt4 book ai didi

c# - 如何使用 asp.net mvc 在 View 中为我的 Controller 中的每个 Action 创建一个 Action 链接?

转载 作者:太空宇宙 更新时间:2023-11-03 21:05:08 25 4
gpt4 key购买 nike

所以,我在 Controller 中有 20 多个 Action,如下所示:

public  ActionResult DoThis()
{
Image img = Image.FromFile("DoThis.png");
//some other stuff to be done.
return View();
}
public ActionResult DoThat()
{
Image img = Image.FromFile("DoThat.png");
//some other stuff to be done.
return View();
}

我有一个 View ,我想为放置在我的 Controller 中的每个 Action 显示 ActionLink,并为该 Action 分配图片,这样说:

@foreach
{
<div class="col-sm-4">
<div class="product-image-wrapper">
<div class="single-products">
<div class="productinfo text-center">
<img src="the image assigned to the controller actions" alt="" />
<h3 style="font-family:'Myriad عربي'">Action Name ؟</h3>
<a href="@URL.Action("The acion link from controller")" class="btn btn-default add-to-cart">Click Here</a>
</div>
</div>
</div>
</div>
}

这可能吗,还是我要求太多了?

最佳答案

这是获取 Controller 上所有操作的 ActionDescriptor[] 列表的一种方法:

@{
var descriptor = new ReflectedControllerDescriptor(this.ViewContext.Controller.GetType());
var actions = descriptor.GetCanonicalActions();
}

@foreach (var action in actions)
{
<div>
@Html.ActionLink("click me", action.ActionName)
</div>
}

当然,现在这将获得当前 Controller 上所有操作的列表。另一方面,如果您只想获取一些特定的操作,则可以用一些标记属性来装饰它们,然后将检索到的操作过滤为仅具有该属性的操作:

public class MyActionAttribute: Attribute
{
}

...

public class HomeController: Controller
{
public ActionResult Index()
{
return View();
}

[MyAction]
public ActionResult DoThis()
{
Image img = Image.FromFile("DoThis.png");
//some other stuff to be done.
return View();
}

[MyAction]
public ActionResult DoThat()
{
Image img = Image.FromFile("DoThat.png");
//some other stuff to be done.
return View();
}
}

然后:

@{
var descriptor = new ReflectedControllerDescriptor(this.ViewContext.Controller.GetType());
var actions = descriptor.GetCanonicalActions().Where(desc => desc.GetCustomAttributes(typeof(MyActionAttribute), true).Any());
}

关于c# - 如何使用 asp.net mvc 在 View 中为我的 Controller 中的每个 Action 创建一个 Action 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41713887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com