【问题标题】:hi i want the substring of a string in @html.displayfor(modelItem=>item.resumelink)嗨,我想要@html.displayfor(modelItem=>item.resumelink) 中的字符串的子字符串
【发布时间】:2016-06-26 11:41:48
【问题描述】:

大家好,我是 mvc 新手,我正在做一个项目...在我看来,我需要在 @html.DisplayFor(modelItem=> item.resumelink). 中获取字符串的子字符串

我尝试了几件事,比如

    <span>
        @Html.LabelFor(modelItem => item.ResumeLink,new {text=item.ResumeLink.Contains("#") ? item.ResumeLink.Substring(0, item.ResumeLink.IndexOf("#")) : item.ResumeLink })
    </span>

但它不起作用。

我正在尝试创建显示模板,但我不知道如何获取文件的最后一个索引,直到我想裁剪我的字符串...任何帮助将不胜感激..thnks

【问题讨论】:

  • 请显示你想从字符串中获取的字符串和子字符串
  • 你想向用户显示子字符串吗?
  • 好的,我摆脱了我想要的东西,但仍然缺少一些东西......我在一个类中声明了一个更多的属性,它将获取上一个属性的子字符串 public string ResumeSubString { get { return ResumeLink .包含(“#”)? ResumeLink.Substring(0, ResumeLink.IndexOf("#")) : ResumeLink; } } 但这也删除了文件的扩展名......但我需要通过删除文件名后的 guid 来显示文件的扩展名
  • 就像我有关于我们的文件名#fb40c127-9501-40ad-807c-9b8216348005.docx 但我想通过仅删除 #fb40c127-9501-40ad-807c 来展示关于 us.docx 的信息-9b8216348005 来自字符串

标签: asp.net-mvc templates substring display displayfor


【解决方案1】:
@Html.ActionLink(modelItem => item.ResumeLink, modelItem => item.ResumeLink, new {text=modelItem => item.ResumeLink.Substring(0,2) }) 

这将生成一个这样的网址

Controller/action/text=20    // i cut the value of 2014

【讨论】:

  • 这只会向用户显示 ResumeLink 以获取 LableFor 方法......所以我使用的是 LabelFor 的 DisplayFor 安装......并且我创建了一个属性,它将提供另一个属性的子字符串。
  • 您希望文本值在其他操作方法中可用吗??
  • displayfor 或 labelfor 重载将值存储为 html 属性,如果您希望用户单击链接并通过将他重定向到不同的操作方法来获取该值,则应使用 @html。 ActionLink 助手
  • 是的,但我确实尝试过 @Html.LabelFor(modelItem => item.ResumeLink,new {text=item.ResumeLink.Contains("#") ? item.ResumeLink.Substring(0, item. ResumeLink.IndexOf("#")) : item.ResumeLink }) 但它不起作用......所以我所做的是在模型类中创建了另一个属性 public string ResumeLink { get;放; } 公共字符串 ResumeSubString { 获取 { 返回 ResumeLink.Contains("#") ? ResumeLink.Substring(0, ResumeLink.IndexOf("#")) : ResumeLink;并在视图文件@Html.DisplayFor(modelItem =>item.ResumeSubString)
  • 我认为这应该可以工作 @Html.ActionLink(modelItem => item.ResumeLink, modelItem => item.ResumeLink, new {text=modelItem => item.ResumeLink.Substring(0,2) } )
【解决方案2】:

这样保持代码干净就好,这里使用的思路是..找到#的索引 然后找到.的索引,并删除该索引范围内的所有字符。

<span>
     @{
        var filename = item.ResumeLink; 
        var actualFileName = filename.Contains("#") ? file.Remove(file.IndexOf('#'), (file.IndexOf('.') - file.IndexOf('#'))) : filename ; 
      }
     @Html.LabelFor(modelItem => item.ResumeLink,new {text= @actualFileName })
  </span>

结果 如果item.ResumeLink = us#fb40c127-9501-40ad-807c-9b8216348005.docx

"us.docx"

【讨论】:

  • 它给出以下错误索引和计数必须引用字符串中的位置。参数名称:count
  • 来自哪一行代码??您确定它来自此代码本身吗??
  • 是从这一行 var actualFileName = filename.Contains("#") ? filename.Remove(filename.IndexOf('#'), filename.IndexOf('.')- 2) : 文件名;
  • System.ArgumentOutOfRangeException:索引和计数必须引用字符串中的位置。
  • 我实际测试了这段代码,然后给了你答案。当您收到此错误时,您能告诉我item.ResumeLink 的值是多少吗
【解决方案3】:

在一个视图中我写了` @Html.DisplayFor(modelItem => item.ResumeSubString)

       @*<a href="#" /> <span>@Html.LabelFor(modelItem => item.ResumeLink,new {text=item.ResumeLink.Contains("#") ? item.ResumeLink.Substring(0, item.ResumeLink.IndexOf("#")) : item.ResumeLink })</span>*@
    </td>`

在一个类中有类似以下的东西

public string ResumeLink { get; set; }
    public string ResumeSubString
    {

        get
        {
            var filename = ResumeLink;
            var actualFileName = filename.Contains("#") ? filename.Remove(filename.IndexOf('#'), (filename.IndexOf('.') - filename.IndexOf('#'))) : filename;
            return actualFileName;
        }
    }

thnx reddy 和愿意回复的人 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 2015-04-26
    • 2014-11-19
    • 2018-08-10
    • 2012-04-23
    • 2018-02-16
    • 2014-09-01
    相关资源
    最近更新 更多