在我的MVC应用程序中,控制器从外部API获取数据(模型)(因此没有使用模型类)并将其传递给视图.数据(模型)有一个容器,其中有几个具有多个字段的对象(字符串值).一个视图遍历每个对象并调用另一个视图来绘制每个对象.此视图迭代字段(字符串值)并绘制它们.
这是我变得棘手的地方.有时我想在字段上做一些特殊的格式化(字符串值).我可以为格式化编写20行代码但是我必须为每个字段执行此操作,这只会是愚蠢而且非常难看.相反,我想取字段(字符串值),将其传递给方法并返回另一个字符串值.然后为每个领域做到这一点.
所以,这是我的问题:
如何从视图中调用方法?
我意识到我可能在这里问错了问题.答案可能是我没有,并且我应该使用本地模型并将从外部API获取的对象反序列化到我的本地模型,然后在我的本地模型中,在我通过之前执行"特殊格式化"它的观点.但我希望有一些方法可以从视图中调用方法.主要是因为将我从API中获取的自定义对象转换为我构建的本地自定义对象似乎需要很多开销,而API又包含许多其他自定义对象.而且,我不确定这样做的最佳方式是什么.
免责声明:我知道类似的线程"ASP.NET MVC:从视图调用控制器方法"(ASP.NET MVC:从视图调用控制器方法)但我不知道这是如何回答我的问题.
我有一个看起来像这样的XML:
<myVal>One</myVal>
<myVal>Two</myVal>
<myVal>Three</myVal>
<myVal>Four</myVal>
<myVal>Five</myVal>
Run Code Online (Sandbox Code Playgroud)
我想将其加载到XDocument中,然后遍历该XDocument中的每个XElement并计算每个元素中的字符数.
这样做的最佳方式是什么?
首先,我注意到我必须添加一个根元素,否则XDocument.Parse()将无法将其解析为XML.所以我补充说:
<span>
<myVal>One</myVal>
<myVal>Two</myVal>
<myVal>Three</myVal>
<myVal>Four</myVal>
<myVal>Five</myVal>
</span>
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时:
foreach (XElement el in xDoc.Descendants())
Run Code Online (Sandbox Code Playgroud)
el将包含整个XML,从第一个开始<span>,包括每个<myVal>s然后结束</span>.
如何<myVal>One</myVal>使用XDocument 迭代每个XML元素(等)?
我事先并不知道所有XML元素的名称,因此它们不会总是被命名为"myVal".
在ascx文件中,我正在显示数据绑定字段中的数据,如下所示:
<%# Eval("Description")%>
Run Code Online (Sandbox Code Playgroud)
数据源是从代码绑定的.
有时候Description我需要替换一些字符.我很乐意,如果我能做这样的事情:
<%# Replace(Eval("Description"), "a", "b")%>
Run Code Online (Sandbox Code Playgroud)
但是当然在数据绑定操作中不允许这样做(<%#).
我不想在代码背后硬代码,因为在后面的代码中提取字段会非常难看,可能会将其提取到变量然后在ascx页面上输出变量.我希望有一些(可能非常简单)的方法,我可以直接在ascx页面上进行替换.