我有下面的代碼的問題:WebMatrix的填充屬性和JavaScript讀屬性沒有產生預期的結果
截面從CSHTML FILE:
@if(errorMessage != "")
{
err="err";
}
else
{
err="";
}
@if(errorMessage == "")
{
foreach(var row in db.Query(stringCompiler, EntryID, POIName, DateLastModified, Gender, Race, Height, Weight, HairColor, EyeColor, DOB, Age, SS, DL, DOC, VehicleTag, FBI, Officer, HomePhone, CellPhone, CellPhone2, CellPhone3, POICautions, WorkPhone, WeightedAggregate, Address, AdditionalDescriptors, Aliases, SourceOfInformation, AddressInformation, KnownAssociates, VehicleDescription, Comments, SummarizedIncidents, AllCellPhones, AllPhones, betDOB1, betDOB2, betDLM1, betDLM2, betAge1, betAge2, POILastName, SearchAll))
{
<div class="searchResult">
<table style="background-color: #beebeb;">
<tr>
<td class="entryLabel">ENTRY ID</td>
<td class="entryLabel">FIRST NAME</td>
<td class="entryLabel">LAST NAME</td>
<td class="entryLabel">DATE LAST MODIFIED</td>
<td class="entryLabel">DOB</td>
<td class="entryLabel">AGE</td>
<td class="entryLabel">ADDRESS</td>
<td class="entryLabel">VEHICLE TAG#</td>
<td class="entryLabel">OFFICER</td>
<td class="entryLabel">HOME PHONE</td>
<td class="entryLabel">CELL PHONE</td>
<td class="entryLabel">WEIGHTED AGGREGATE</td>
</tr>
<tr>
<td class="entry">@row.EntryID</td>
<td class="entry">@row.POIName</td>
<td class="entry">@row.POILastName</td>
<td class="entry">@row.DateLastModified</td>
<td class="entry">@row.DOB</td>
<td class="entry">@row.Age</td>
<td class="entry">@row.Address</td>
<td class="entry">@row.VehicleTag</td>
<td class="entry">@row.Officer</td>
<td class="entry">@row.HomePhone</td>
<td class="entry">@row.CellPhone</td>
<td class="entry">@row.WeightedAggregate</td>
</tr>
<tr>
<td colspan="13" style="text-align: center;"><form method="post" action="/ComputeLookupToVAndE.cshtml"><input type="hidden" name="veEntryID" hidden="hidden" readonly="true" value="@row.EntryID" /><br/><input type="submit" value="View & Edit" class="btn3" style="height: 40px; width: 100px;" /><br/><br/></form></td>
</tr>
</table>
</div><br/>
ResultCount += 1;
}
<input type="hidden" id="ResultCount" value="@ResultCount" />
<input id="err" type="hidden" value='@err' />
}
部分與JavaScript文件:
$(document).ready(function() {
if ($("#err").val() == "err")
{
$("#searchForm").attr('action', "/LookUpEntry.cshtml#top");
}
else
{
$("#searchForm").attr('action', "/LookUpEntry.cshtml#searchList");
}
});
很明顯,我試圖改變隱藏的輸入元素的值「err」之前,由C#呈現頁面,如果任何錯誤消息已存儲在變量呃rorMessage。
一旦完成JavaScript應該讀取此值,然後如果它是「err」更改表單的action屬性以追加「#top」(對於指定的錨點,因此頁面上的加載位置基於是否有錯誤消息或結果查看),否則應該更改表單的action屬性(仍然由JavaScript)以追加#searchList)。
任何想法爲什麼JavaScript和C#不能很好地一起玩?我得到的錯誤是隨意的(就像它第一次不會工作,然後根本不工作),無論如何基於下面的代碼,它仍然永遠不會(#top),雖然當嘗試幾件事情在這個確切的編碼之前(我不記得他們是什麼),它有時(雖然從來沒有第一次)如果它出現了錯誤,會跳到頂端。
爲什麼jQuery沒有完成它的工作?這似乎應該只對我工作...
任何想法?
感謝所有幫助
JavaScript和C#沒有真正的互動,所以關於他們在一起沒有問題。也許如果你導航到頁面,然後查看源代碼,並查看原始HTML,你會看到如何設置錯誤。這可以說明實際發生的情況。我確定在頁面加載到瀏覽器之前並且在JavaScript運行之前設置了err。 – Knox
@Knox,是的,我知道,它們會在不同的時間影響它,C#會在JavaScript甚至查看它之前影響它,並且在JavaScript看到它時,它已經被C#渲染。我的意思並不是字面意思,我的意思是說,只要我嘗試使用C#發佈動態值,然後在客戶端撿起它,JavaScript總是像醉漢一樣行動,然後將其全部搞定。 – VoidKing
@Knox 您的建議檢查原始HTML幫助我更好地瞭解錯誤。如果沒有你的幫助,我不會明白髮生了什麼問題(至少不會這麼快)。再次感謝諾克斯:) – VoidKing