脚本适用于Create,但在Edit中不适用

时间:2012-10-10 17:08:50

标签: c# asp.net-mvc-3 jquery

我的ASP.NET MVC项目有一个视图。 此视图有很多字段和脚本来搜索某些数据。

<link href="@Url.Content("~/Content/styles/people.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/people.js")" type="text/javascript"></script>


<input type="hidden" id="selectiveAccess" name="selectiveAccess" value="@ViewBag.SelectiveAccess" />
<input type="hidden" id="peopleID" name="peopleID" value="@ViewBag.PeopleID" />

<div id="content">
<h1>People - Create</h1>
<h3>All the fields with (*) are required.</h3>


@using (Html.BeginForm("Save", "People", FormMethod.Post))
{
    @Html.Partial("EnabledCourses")
    @Html.Partial("GeneralData")    
    @Html.Partial("AddressData")
    @Html.Partial("ContactData")    
    @Html.Partial("OtherInformations")
    @Html.Partial("Research")

    <a href="#top">Back to the top</a>
    <div id="divErrors"></div>

    <div id="actions">
        <ul style="list-style: none;">
            <li style="display: inline"><input type="reset" id="clear" style="height: 3em; width: 10em" value="Clear form" /></li>
            <li style="display: inline"><input type="submit" id="continue" style="height: 3em; width: 10em" value="Continue" /></li>
        </ul>
    </div>
}

当我调用Index()时,脚本运行正常。

public ActionResult Index()
{
    ViewBag.PeopleID = string.Empty;
    return View();
}

当我调用Edit()时,相同的脚本不起作用。

public ActionResult Edit(long peopleID)
{
    ViewBag.PeopleID = peopleID;
    return View("Index");
}

这是剧本:

function searchCityByPostalCode() {

var postalCode = {
    'postalCode': $('#postalCode').val()
};

$.get(
    'people/SearchCityByPostalCode',
    postalCode,
    function (city) {
        // do something that works.
    }
);
}

有谁知道这个问题? 感谢!!!

1 个答案:

答案 0 :(得分:1)

最有可能的原因是您使用的是相对链接。

索引允许你做这样的事情

  • www.mysite.com/Mycontroller/ - 转到索引
  • www.mysite.com/Mycontroller/Index - 转到索引(与上述相同)

然而,编辑会强制您使用第二种形式,因为没有默认路线值

  • www.mysite.com/Mycontroller/Edit/ {ID}

这意味着当您在索引中调用get函数时,请求看起来像

  • www.mysite.com/Mycontroller/people/SearchCityByPostalCode

编辑看起来像这是一条不同的路径

  • www.mysite.com/Mycontroller/Edit/people/SearchCityByPostalCode

所以基本上你需要使用绝对引用,以便URL可以从站点的根目录起作用。

$.get(
    '/people/SearchCityByPostalCode',
    postalCode,
    function (city) {
        // do something that works.
    }
);