2sxc |通过修剪 w/ Javascript 方法删除文件路径
2sxc | removing file path by trimming w/ Javascript method
我有以下文件路径显示:
我只想显示文件名 'Doc1'(减去路径和扩展名)。
我尝试了以下操作但未成功,如果您能分享我做错了什么,我将不胜感激...
@functions{
public static string SplitWord(string text, int length)
{
string str = text;
int n = str.LastIndexOf(".");
string str1=str.Substring(n,str.LastIndexOf("/"));
str1=str1.Substring(1,str1.Length);
return str1;
}
}
<ol>
@foreach (var q in AsDynamic(App.Data["CatFilter"]))
{
<li class="sc-element faq-set faq-setOne" data-tags="@String.Join(",", ((List<DynamicEntity>)q.Categories).Select(a => AsDynamic(a).EntityId))">
@q.Toolbar @Edit.Toolbar(actions: "edit,new", contentType: "CatFilter")
<a class="faq-question" style="cursor: pointer">
@if(!String.IsNullOrEmpty(q.LinkText))
{
SplitWord(@q.LinkText,@q.LinkText.Length);
} else {
SplitWord(@q.Link,@q.Link.Length);
}
</a>
</li>
}
</ol>
我还在 IF 条件下尝试了以下变体,但还是没有成功。
,,,,@:var str = q.Link;
,,,,@:var n = str.lastIndexOf(".");
,,,,@:var str1=str.Substring(n,str.lastIndexOf("/"))
,,,,@:str1=str1.Substring(1,str1.Length);
谢谢,
您实际上只是错误地使用了 Substring。你可能想要
public static string SplitWord(string text, int length)
{
int slash = text.LastIndexOf("/");
int dot = text.LastIndexOf(".");
return text.Substring(slash + 1, dot - slash);
}
试一试 - 可能需要对其中一个值再添加一个 +1 或 -1,但这应该可以解决问题。
你是对的(如你所说的稍作调整)....
我还尝试集成一个日期字段,这样无论用户选择什么日期,它都会始终显示当前(上传)日期。
是否有一个字符串可以输入到日期选择器字段的默认值中以显示 'Today' 而不是用户必须在选择器中单击它? (再次混合问题:))
@functions{
public static string SplitWord(string text,DateTime datetime)
{
int slash = text.LastIndexOf("/");
int dot = text.LastIndexOf(".");
dot--;
var data = text.Substring(slash + 1, dot - slash);
return data + " " + datetime.ToLongDateString();
}
}
@{
var all = AsDynamic(App.Data["CatFilter"]);
}
<ol>
@foreach (var q in AsDynamic(App.Data["CatFilter"]))
{
<li class="sc-element faq-set faq-setOne" data-tags="@String.Join(",", ((List<DynamicEntity>)q.Categories).Select(a => AsDynamic(a).EntityId))">
@q.Toolbar @Edit.Toolbar(actions: "edit,new", contentType: "CatFilter")
<a class="faq-question" style="cursor: pointer">
@if(!String.IsNullOrEmpty(q.LinkText))
{
@q.LinkText
} else {
@SplitWord(q.Link,q.Date);
}
</a>
</li>
}
</ol>
更新
这是您的另一个模板,我对其应用了 SplitWord 函数,但出现了错误。我看不出与上面运行良好的代码有什么区别。
这是我指的代码:
@using ToSic.SexyContent
@* put all necessary link/script tags here *@
@RenderPage("_Shared - Assets.cshtml", new { parts = "styles,scripts,height"})
@{
// get helper commands
var Helpers = CreateInstance("_Helpers.cshtml");
}
@functions{
public static string SplitWord(string text)
{
int slash = text.LastIndexOf("/");
var data = text.Substring(slash + 1);
return data;
}
}
<div class="clearfix">
<div class="co-container-outer">
<div class="co-container-inner row co-navigation co-navigation-@(Dnn.Module.ModuleID) co-navigation-icon co-navigation-text">
@foreach (var Content in AsDynamic(Data["Default"].List))
{
var linkInfo = Helpers.LinkInfos(Content.Link, Content.Window, Content.Icon);
<div class="col col-xs-12 col-sm-6 col-md-4 sc-element">
@Edit.Toolbar(Content)
@if(linkInfo.Found)
{
@:<a class="co-link-box" title="@Content.Title" href="@Content.Link" target="@linkInfo.Window">
}
<div class="row">
<div class="col-xs-2 text-center">
<i class="co-icon text-primary co-icon fa @linkInfo.Icon" aria-hidden="true"></i>
</div>
<div class="col-xs-10">
<h3>@Content.Link</h3>
<div class="co-ul">
<a class="" title="@Content.Link" href="@Content.SubpageOne">@SplitWord(Content.SubpageOne)</a>
</div>
@if(!String.IsNullOrEmpty(Content.Link))
{
<a href="@Content.Link)"><span class="text-primary">
<!--<i class="glyphicon glyphicon-chevron-right text-primary" aria-hidden="true"></i> -->
@Content.LinkText</span></a>
}
</div>
</div>
@if(linkInfo.Found)
{
@:</a>
}
</div>
}
</div>
</div>
</div>
<script>
/* Call syncHeightResponsive here - makes sure that sync height also works after ajax reload */
$(".co-navigation-@(Dnn.Module.ModuleID) .col").syncHeightResponsive();
</script>
我有以下文件路径显示:
我只想显示文件名 'Doc1'(减去路径和扩展名)。
我尝试了以下操作但未成功,如果您能分享我做错了什么,我将不胜感激...
@functions{
public static string SplitWord(string text, int length)
{
string str = text;
int n = str.LastIndexOf(".");
string str1=str.Substring(n,str.LastIndexOf("/"));
str1=str1.Substring(1,str1.Length);
return str1;
}
}
<ol>
@foreach (var q in AsDynamic(App.Data["CatFilter"]))
{
<li class="sc-element faq-set faq-setOne" data-tags="@String.Join(",", ((List<DynamicEntity>)q.Categories).Select(a => AsDynamic(a).EntityId))">
@q.Toolbar @Edit.Toolbar(actions: "edit,new", contentType: "CatFilter")
<a class="faq-question" style="cursor: pointer">
@if(!String.IsNullOrEmpty(q.LinkText))
{
SplitWord(@q.LinkText,@q.LinkText.Length);
} else {
SplitWord(@q.Link,@q.Link.Length);
}
</a>
</li>
}
</ol>
我还在 IF 条件下尝试了以下变体,但还是没有成功。
,,,,@:var str = q.Link;
,,,,@:var n = str.lastIndexOf(".");
,,,,@:var str1=str.Substring(n,str.lastIndexOf("/"))
,,,,@:str1=str1.Substring(1,str1.Length);
谢谢,
您实际上只是错误地使用了 Substring。你可能想要
public static string SplitWord(string text, int length)
{
int slash = text.LastIndexOf("/");
int dot = text.LastIndexOf(".");
return text.Substring(slash + 1, dot - slash);
}
试一试 - 可能需要对其中一个值再添加一个 +1 或 -1,但这应该可以解决问题。
你是对的(如你所说的稍作调整)....
我还尝试集成一个日期字段,这样无论用户选择什么日期,它都会始终显示当前(上传)日期。
是否有一个字符串可以输入到日期选择器字段的默认值中以显示 'Today' 而不是用户必须在选择器中单击它? (再次混合问题:))
@functions{
public static string SplitWord(string text,DateTime datetime)
{
int slash = text.LastIndexOf("/");
int dot = text.LastIndexOf(".");
dot--;
var data = text.Substring(slash + 1, dot - slash);
return data + " " + datetime.ToLongDateString();
}
}
@{
var all = AsDynamic(App.Data["CatFilter"]);
}
<ol>
@foreach (var q in AsDynamic(App.Data["CatFilter"]))
{
<li class="sc-element faq-set faq-setOne" data-tags="@String.Join(",", ((List<DynamicEntity>)q.Categories).Select(a => AsDynamic(a).EntityId))">
@q.Toolbar @Edit.Toolbar(actions: "edit,new", contentType: "CatFilter")
<a class="faq-question" style="cursor: pointer">
@if(!String.IsNullOrEmpty(q.LinkText))
{
@q.LinkText
} else {
@SplitWord(q.Link,q.Date);
}
</a>
</li>
}
</ol>
更新
这是您的另一个模板,我对其应用了 SplitWord 函数,但出现了错误。我看不出与上面运行良好的代码有什么区别。
这是我指的代码:
@using ToSic.SexyContent
@* put all necessary link/script tags here *@
@RenderPage("_Shared - Assets.cshtml", new { parts = "styles,scripts,height"})
@{
// get helper commands
var Helpers = CreateInstance("_Helpers.cshtml");
}
@functions{
public static string SplitWord(string text)
{
int slash = text.LastIndexOf("/");
var data = text.Substring(slash + 1);
return data;
}
}
<div class="clearfix">
<div class="co-container-outer">
<div class="co-container-inner row co-navigation co-navigation-@(Dnn.Module.ModuleID) co-navigation-icon co-navigation-text">
@foreach (var Content in AsDynamic(Data["Default"].List))
{
var linkInfo = Helpers.LinkInfos(Content.Link, Content.Window, Content.Icon);
<div class="col col-xs-12 col-sm-6 col-md-4 sc-element">
@Edit.Toolbar(Content)
@if(linkInfo.Found)
{
@:<a class="co-link-box" title="@Content.Title" href="@Content.Link" target="@linkInfo.Window">
}
<div class="row">
<div class="col-xs-2 text-center">
<i class="co-icon text-primary co-icon fa @linkInfo.Icon" aria-hidden="true"></i>
</div>
<div class="col-xs-10">
<h3>@Content.Link</h3>
<div class="co-ul">
<a class="" title="@Content.Link" href="@Content.SubpageOne">@SplitWord(Content.SubpageOne)</a>
</div>
@if(!String.IsNullOrEmpty(Content.Link))
{
<a href="@Content.Link)"><span class="text-primary">
<!--<i class="glyphicon glyphicon-chevron-right text-primary" aria-hidden="true"></i> -->
@Content.LinkText</span></a>
}
</div>
</div>
@if(linkInfo.Found)
{
@:</a>
}
</div>
}
</div>
</div>
</div>
<script>
/* Call syncHeightResponsive here - makes sure that sync height also works after ajax reload */
$(".co-navigation-@(Dnn.Module.ModuleID) .col").syncHeightResponsive();
</script>