2012-10-18 41 views
1

我有下面的代碼的問題: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沒有完成它的工作?這似乎應該只對我工作...

任何想法?

感謝所有幫助

+0

JavaScript和C#沒有真正的互動,所以關於他們在一起沒有問題。也許如果你導航到頁面,然後查看源代碼,並查看原始HTML,你會看到如何設置錯誤。這可以說明實際發生的情況。我確定在頁面加載到瀏覽器之前並且在JavaScript運行之前設置了err。 – Knox

+0

@Knox,是的,我知道,它們會在不同的時間影響它,C#會在JavaScript甚至查看它之前影響它,並且在JavaScript看到它時,它已經被C#渲染。我的意思並不是字面意思,我的意思是說,只要我嘗試使用C#發佈動態值,然後在客戶端撿起它,JavaScript總是像醉漢一樣行動,然後將其全部搞定。 – VoidKing

+0

@Knox 您的建議檢查原始HTML幫助我更好地瞭解錯誤。如果沒有你的幫助,我不會明白髮生了什麼問題(至少不會這麼快)。再次感謝諾克斯:) – VoidKing

回答

0

嗯,我想我已經想通了,我想這有一定道理:

它確實改變了價值,因爲它應該,但行動(怎麼形成的[或者更確切地說,我看待它的方式]處理髮布的數據)已經被設置爲它將去的地方,而不管當前搜索的結果如何。簡而言之:它落後了一步。當我點擊進行搜索併產生錯誤消息時,它會按照預期重寫該操作,但是當然,它只會在下一次搜索時生效,而不是當前的搜索,因爲這在之前的提交中已經確定。

我的代碼有什麼問題?沒有任何語法,方法論(邏輯)是錯誤的。