Error executing template "QueryPublisher/SearchMagazinesList.cshtml"
System.ArgumentOutOfRangeException: StartIndex cannot be less than zero.
Parameter name: startIndex
at System.String.Remove(Int32 startIndex)
at CompiledRazorTemplates.Dynamic.RazorEngine_adc2ae10c4fa4309ba92a8671c2efe95.Execute() in D:\dynamicweb.net\Solutions\JoyCo\narvesen.cloud.dynamicweb-cms.com\files\Templates\QueryPublisher\SearchMagazinesList.cshtml:line 184
at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @using System;
2 @using System.Data;
3 @using Dynamicweb.Data;
4 @using System.Web;
5
6 @functions{
7
8 List<List<string>> GetOptionsData()
9 {
10 var options = new List<List<string>>();
11
12 using(var connection = Database.CreateConnection()){
13
14 using (var command = connection.CreateCommand())
15 {
16 string sql = "SELECT ProductCategory2_CategoryID, ProductCategory2_Category FROM ProductCategory2 ORDER BY ProductCategory2_Category COLLATE Latin1_General_CI_AS ASC";
17
18 command.CommandText = sql;
19
20 using (var reader = command.ExecuteReader())
21 {
22 while (reader.Read())
23 {
24 var temp = new List<string>();
25 /*temp.Add(reader[0].ToString());*/
26 temp.Add(reader[1].ToString());
27 temp.Add(reader[1].ToString());
28 options.Add(temp);
29 }
30
31 }
32 }
33 }
34 return options;
35 }
36
37 }
38
39 @helper PrintOptions(string value, string text)
40 {
41 <option value="@value">@text</option>
42 }
43
44 @helper GetOptions(){
45 var options = GetOptionsData();
46 if(options.Count() > 0)
47 {
48 foreach(List<string> opt in options)
49 {
50 var val = opt[0];
51 var txt = opt[1];
52 @PrintOptions(val, txt);
53 }
54 }
55 }
56
57 @{
58 string qVal = System.Web.HttpContext.Current.Request.QueryString["q"];
59
60 <div id="magsearch" class="articlecontent">
61 <div class="inner align-center">
62 <form action="/default.aspx" method="get" name="MagazineSearch">
63 <input type="hidden" name="ID" value="@GetGlobalValue("Global:Page.ID")">
64 <div class="inputwrapper">
65 <input id="msearch" type="search" name="q" value="@System.Web.HttpContext.Current.Request.QueryString["q"]" placeholder="Tittel">
66 <input class="button special" type="submit" value="Søk">
67 </div>
68 <div class="select-wrapper">
69 <select name="a">
70 @{
71 string qStr = System.Web.HttpContext.Current.Request.QueryString["a"];
72
73 if(!String.IsNullOrEmpty(qStr)){
74 <option value="">Velg kategori</option>
75 <option value="@qStr" selected>@qStr</option>
76 } else {
77
78 <option value="" selected>Velg kategori</option>
79 }
80 }
81 @GetOptions()
82 </select>
83 </div>
84
85 @*
86 @foreach (var facetGroup in GetLoop("FacetGroups"))
87 {
88 foreach (var facet in facetGroup.GetLoop("Facets"))
89 {
90 var name = facet.GetString("Facet.Name");
91 <select name="@name">
92 <option value="" selected>Velg kategori</option>
93 @foreach (var opt in facet.GetLoop("FacetOptions"))
94 {
95 <option value="@opt.GetValue("FacetOption.Value")" selected="@opt.GetValue("FacetOption.Selected")">@opt.GetValue("FacetOption.Label")</option>
96 }
97 </select>
98 }
99 }
100 *@
101
102 </form>
103 </div>
104 </div>
105
106 <div id="maglist" class="maglist wrapper">
107
108 <header class="align-center">
109 <h2>Søkeresultat</h2>
110 </header>
111
112 @if(String.IsNullOrEmpty(@qStr) && String.IsNullOrEmpty(@qVal)) {
113 <div class="ptxt align-center" style="margin-bottom:4rem;">Ditt søk er ikke spesifisert - her viser vi deg noen av våre mest populære magasiner. <br>Leter du etter noe spesifikt anbefaler vi at du angir søkeord eller velger en kategori.</div>
114 <div id="grid"></div>
115 <script>
116
117 $("#grid").load("/Default.aspx?ID=168 .grid-style", function(){
118 $("#paging").empty().hide();
119 });
120 </script>
121 }
122 else
123 {
124 if(Loops.Contains("QueryResultItem")) {
125
126 var results = GetLoop("QueryResultItem");
127 if(results.Count > 0)
128 {
129 <div class="grid-style">
130 @foreach (var result in GetLoop("QueryResultItem"))
131 {
132 string catH = @result.GetString("MainCategoryID");
133 string cat = @result.GetString("CategoryA");
134 string CategoryA = @HttpContext.Current.Server.UrlEncode(cat);
135 string ProductId = @result.GetString("ProductID");
136 string ProductIssue = @result.GetString("ProductIssue");
137 string ImageUrl = @result.GetString("ProductImage");
138 string strval = @result.GetString("ProductPrice");
139 string Price;
140 //string Price = String.Format("kr {0},-", int.Parse(strval.Substring(0, strval.IndexOf("."))));
141
142
143 <div class="box">
144 <div class="innerbox @catH" style="background:#3B302B url('@ImageUrl') no-repeat left top / 40% 100%;">
145 <a class="detail" href="/lesestoff/magasiner/magasin?a=@CategoryA&prod=@ProductId&issue=@ProductIssue">Finn utsalgssted</a>
146 <div class="info">
147 <h3 class="">@result.GetString("ProductTitle")</h3>
148 <p>@result.GetString("ProductDescription")</p>
149 <span class="price">
150 @if(strval.IndexOf(".") > 0) {
151 Price = String.Format("kr {0},-", int.Parse(strval.Substring(0, strval.IndexOf("."))));
152 } else if(!string.IsNullOrEmpty(strval)) {
153 Price = String.Format("kr {0},-", strval);
154 } else {
155 Price = "";
156 }
157
158 @Price
159 </span>
160 </div>
161 <a class="button special small" href="/lesestoff/magasiner/magasin?a=@CategoryA&prod=@ProductId&issue=@ProductIssue">Finn utsalgssted</a>
162 </div>
163 </div>
164
165 }
166 </div>
167 } else {
168 <div class="ptxt align-center">Beklager, søket ga ingen treff. Forsøk et annet søkeord (tittel), eller velg kategori.</div>
169 }
170 }
171 }
172 </div>
173
174 if(GetInteger("DwPaging.PageCount") > 1)
175 {
176 string urlStr = @GetGlobalValue("Global:Pageview.Url");
177
178 <div id="paging" class="align-center">
179
180 @if(GetInteger("DwPaging.CurrentPage") > 1)
181 {
182 //var url = GetValue("DwPaging.PreviousPageLink");
183 var ix = GetInteger("DwPaging.CurrentPage") - 1;
184 urlStr = urlStr.Remove(urlStr.LastIndexOf("&PageNum")) + "&PageNum=" + ix;
185 <a href="@urlStr">@Translate("PreviousPage", "Previous page")</a>
186 }
187
188 @foreach (LoopItem item in GetLoop("DwPaging.LoopPageGroup")) {
189 //string url = item.GetString("PageGroup.PageLink");
190 string cls="";
191 if (urlStr.LastIndexOf("&PageNum") > 0) {
192 urlStr = urlStr.Remove(urlStr.LastIndexOf("&PageNum")) + "&PageNum=" + item.GetInteger("PageGroup.PageNumber");
193 } else {
194 urlStr = urlStr + "&PageNum=" + item.GetInteger("PageGroup.PageNumber");
195 }
196 if(item.GetBoolean("PageGroup.ActivePage")){
197 cls="active";
198 }
199 <a href="@urlStr" class="@cls">@item.GetInteger("PageGroup.PageNumber")</a>
200 }
201
202 @if(GetInteger("DwPaging.CurrentPage") < GetInteger("DwPaging.PageCount"))
203 {
204 //var url = @GetValue("DwPaging.NextPageLink");
205 var ix = GetInteger("DwPaging.CurrentPage") + 1;
206 urlStr = urlStr.Remove(urlStr.LastIndexOf("&PageNum")) + "&PageNum=" + ix;
207 <a href="@urlStr">@Translate("NextPage", "Next page")</a>
208 }
209
210 </div>
211 }
212 }
213
214