【发布时间】:2016-04-18 20:45:33
【问题描述】:
我在 Visual Studio 制作一个 asp.net 项目。我有两个控制器函数 [HttpGet] AccountCreate 和 [HttpPost] AccountCreate。 Get 返回一个带有模型 AccountCreatePageModel 的 PartialView。一切都在这里,我的 javascript 和 jquery 是可靠的。当我提交表单时,我会检查以确保输入是唯一的,如果不是,我将部分视图以与 Get 相同的方式发回。但是当它加载并尝试运行 javascript 时,每个使用 $ 用于 jquery 的地方都会中断,所以我想它不再知道 jquery 是什么了。怎么会这样?这一切的完成方式与 Get 相同。
[HttpGet]
public PartialViewResult AccountCreate(Guid functionId, long? parentId)
{
AccountCreatePageModel model = new AccountCreatePageModel
{
Function = DataFactory.SystemAccess.GetFunction(functionId),
ParentId = parentId
};
if (parentId != default(long?))
{
model.Account = DataFactory.PartyAccess.GetAccount((long)parentId);
model.Organization = DataFactory.PartyAccess.GetOrganizationByAccountId(model.Account.Id);
model.Person = DataFactory.PartyAccess.InitializePerson();
model.Account.Id = (long)parentId;
}
else
{
model.Account = DataFactory.PartyAccess.InitializeAccount();
model.Organization = DataFactory.PartyAccess.InitializeOrganization();
model.Person = DataFactory.PartyAccess.InitializePerson();
model.Address = DataFactory.PartyAccess.InitializeAddress();
}
model.PhoneNumber = new PhoneNumberModel();
return PartialView(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AccountCreate(AccountCreatePageModel model)
{
long id = 0;
long phoneNumberParentId = 0;
long accountId = 0;
if (model.Account.Id > 0)
{
accountId = model.Account.Id;
}
else
{
accountId = DataFactory.PartyAccess.UpsertAccount(model.Account, true).Id;
model.Function = DataFactory.SystemAccess.GetFunction(model.Function.Id);
if (accountId == -1) //Account.AccountId already exists, send message back to user
{
return PartialView(model); //this returns my partial back
}
}
这是 razor HTML
@using Application.Web.Extensions
@model Application.Web.Models.AccountCreatePageModel
@if ((Model.Organization.Id == 0) && (Model.Person.Id == 0))
{
<script type="text/javascript">
$(function () {
$('#Organization_Name').rules('remove');
$('#Person_LastName').rules('remove');
$('#btnSave').click( function (e) {
if (($('#Organization_Name').val() == "" && $('#Person_LastName').val() === "") || ($('#Person_FirstName').val() !== "" && $('#Person_LastName').val() === "")) {
e.preventDefault();
document.getElementById("OrgLastNameError").innerHTML = "Organization Name or Last Name must be provided";
}
if ($('#Person_FirstName').val() !== "" && $('#Person_LastName').val() === "") {
e.preventDefault();
document.getElementById("OrgLastNameError").innerHTML = "Last Name must be provided";
$('#Person_LastName').focus();
}
//if($('#'))
});
});
</script>
}
@Html.HiddenFor(model => model.Function.Id)
<div class="row">
<div id="OrgLastNameError" class="text-danger"></div>
</div>
<div class="row">
@Html.PartialFor(model => Model.Account, "_AccountEdit", new ViewDataDictionary { { "Readonly", (Model.Account.Id > 0) } })
</div>
<div class="row">@Html.PartialFor(model => Model.Organization, "_OrganizationEdit", new ViewDataDictionary { { "Readonly", (Model.Organization.Id > 0) } })</div>
<div class="row">@Html.PartialFor(model => Model.Person, "_PersonEdit") </div>
【问题讨论】:
-
请添加代码-前端代码
-
这里有控制器代码和使用的直接 html 代码。顶部的 javascript 在遇到第一个“$”符号时会中断,并说明它如何不知道它是什么
-
第一次遇到 $ 时说代码中断是什么不起作用
-
我明白了:0x800a1391 - JavaScript 运行时错误:'$' 未定义
-
如果我点击继续,每个使用 jquery 或 '$' 的地方都会运行一个 javascript 错误
标签: jquery asp.net http-post http-get