-1

彼ら。

ASP.NETMVCプロジェクトに関するビューがあります。このビューには、いくつかのデータを検索するための多くのフィールドとスクリプトがあります。

<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.
    }
);
}

誰もが問題を知っていますか?ありがとう!!!

4

1 に答える 1

1

ほとんどの場合、使用している相対リンクが原因です。

インデックスを使用すると、次のようなことができます

  • www.mysite.com/Mycontroller/ - インデックスに移動
  • www.mysite.com/Mycontroller/Index - インデックスに移動 (上記と同じ)

ただし、デフォルトのルート値がないため、編集では 2 番目の形式を使用する必要があります。

  • 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.
    }
);
于 2012-10-10T17:57:33.387 に答える