1

我对以下代码有疑问:

CSHTML 文件的部分:

                        @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");
}
});

显然,如果变量errorMessage中存储了任何错误消息,我试图在C#呈现页面之前将隐藏输入元素的值更改为“err”。

一旦完成,JavaScript 应该读取这个值,然后如果它是“err”,则更改表单的 action 属性以附加“#top”(对于命名锚,因此页面上的加载位置会根据是否存在要查看的错误消息或结果),否则应更改表单的操作属性(仍由 JavaScript)以附加#searchList)。

知道为什么 JavaScript 和 C# 不能很好地协同工作吗?我得到的错误是偶然的(就像它第一次不起作用,然后根本不起作用),无论如何基于下面的代码,它仍然永远不会去(#top),尽管在尝试一些事情时在这个确切的编码之前(我不记得它们到底是什么),如果它出错了,有时(尽管从来没有第一次)会到达顶部。

为什么 jQuery 没有做好它的工作?看来这应该对我有用...

有任何想法吗?

谢谢你的帮助

4

1 回答 1

0

好吧,我想我已经弄清楚了,我想它确实有道理:

它确实会按应有的方式更改值,但是操作(表单[或者更确切地说,我查看它的方式]处理发布的数据的方式)已经设置为无论当前的结果如何,它将去哪里搜索。简而言之:落后了一步。当我单击搜索并生成错误消息时,它将按预期重写操作,但它当然只会在下一次搜索而不是当前搜索时生效,因为这已经在上一次提交中确定。

我的代码有什么问题?从语法上讲,方法论(逻辑)是错误的。

于 2012-10-18T21:13:42.070 回答