gpt4 book ai didi

asp.net-mvc - 传递给辅助方法时如何获取 <#= Id #> 的值

转载 作者:行者123 更新时间:2023-12-04 05:59:23 25 4
gpt4 key购买 nike

我正在使用 ASP.NET MVC 3razor .我也在使用最新版本的Telerik MVC .

我的 View 上有一个网格,显示应用程序列表。每个应用程序都有一个状态。我需要编写一个辅助方法来根据每个应用程序的当前状态在网格的每一行中显示链接。如果状态为 1,那么我需要显示一个编辑链接。我的助手看起来像这样:

public static string ActionLinks(this HtmlHelper helper, string grantApplicationId, string grantApplicationStateId)
{
List<TagBuilder> linkList = new List<TagBuilder>();
string actionLinks = string.Empty;

if (grantApplicationStateId == "1")
{
// Edit link
TagBuilder editLink = new TagBuilder("a");
editLink.MergeAttribute("href", "/GrantApplication/Edit/" + grantApplicationId);
editLink.InnerHtml = "Edit";
linkList.Add(editLink);
}

foreach (TagBuilder link in linkList)
{
actionLinks += link.ToString() + "<br>";
}

return actionLinks;
}

Telerik 网格中的网格列如下所示:
column.Bound(x => x.Id)
.ClientTemplate(@Html.ActionLinks("<#= Id #>", "<#= GrantApplicationStateType.Id #>"))
.Title("Actions");

我的 View 模型如下所示:
public class GrantApplicationListViewModel
{
// Just partial properties
public GrantApplicationStateType GrantApplicationStateType { get; set; }
}

GrantApplicationStateType 看起来像:
public class GrantApplicationStateType : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
}

当调用上述辅助方法时,grantApplicationStateId 的值为“<#= GrantApplicationStateType.Id #>”。我将如何获得通过的值?我的意思是,如果传递的值为 1,我将如何获得 1,因为目前它是“<#= GrantApplicationStateType.Id #>”?

更新 2012-02-06

我尝试了 Darin 的链接,在我的代码中使用了完全相同的示例,但更改了以下内容:
column.ActionLink("Open", "Edit", "GrantApplication", item => new { id = item.Id, applicationStateId = item.GrantApplicationStateType.Id });

我需要通过 2 个值。我需要对授权应用程序状态 ID 执行几个 if 语句,然后将特定操作链接返回给客户端。但是在遍历以下值时失败:
if (memberExpression.Expression is ParameterExpression)
value = string.Format("<#= {0} #>", memberExpression.Member.Name);
else
value = GetValue(memberExpression);

传入的第一个参数通过 if 语句的第一/真部分:
value = string.Format("<#= {0} #>", memberExpression.Member.Name);

..但是第二个参数通过if的错误部分:
value = GetValue(memberExpression);

2有什么区别?

然后它在 GetValue 方法中失败,并显示以下消息:
variable 'item' of type MyProject.ViewModels.GrantApplicationListViewModel' referenced from scope '', but it is not defined

我无法让这个工作,我寻找更多的样本,但找不到任何样本。

最佳答案

您不能使用助手来执行此操作。在 ASP.NET MVC 中,帮助程序在服务器上运行。注意 ClientTemplate Telerik 网格中的名称?这意味着在客户端上运行。

它的作用是简单地使用 <#= Id #>作为服务器端助手的占位符,它将生成一些 HTML 和 在客户端 ,Telerik 网格将执行简单的字符串替换,以便将仅在客户端知道的值。

目前你的服务器端ActionLinks调用助手时,Telerik 网格无法将仅在客户端知道的实际值传递给您。

你可以看看following blog post一个不错的扩展。

关于asp.net-mvc - 传递给辅助方法时如何获取 <#= Id #> 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110317/

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