2

私が試したいくつかのリンクは、それが私のコードに私を導きました...それは機能していません:D

DropDownLists でドロップを取得し、カスケード ドロップダウン リストを 作成する

ユーザーがドロップダウン リストから部品番号 (itemnmbr) を選択できるようにしようとしています。選択すると、ページの部品説明 (itemdesc) テキスト ボックスが正しい値で更新されます。以下は私が得た最も近いものです。

コードを表示:

    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>


<script type="text/javascript">
    $(document).ready(function () {
        $("#ITEMNMBR").change(function () {
            $.get("/PartsLabor/GetPartDesc", $(this).val(), function (data) {
                $("#ITEMDESC").val(data);
            });
        });
    });
</script>

@using (Html.BeginForm()) 
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Add part to call: @ViewBag.CALLNBR</legend>

            @Html.LabelFor(model => model.ITEMNMBR, "Item Number")
            @Html.DropDownList("ITEMNMBR", (SelectList) ViewBag.Items, "Please Select a Part #")
            @Html.ValidationMessageFor(model => model.ITEMNMBR)
        <br />
            @Html.LabelFor(model => model.ITEMDESC, "Description")
            @Html.EditorFor(model => model.ITEMDESC)
            @Html.ValidationMessageFor(model => model.ITEMDESC)
        <br />
            <input type="submit" class="submit" value="Add Part" />

    </fieldset>
}

コントローラーコード:

    [Authorize]
    public ActionResult PCreate(string call)
    {

        var q = db.IV00101.Select(i => new { i.ITEMNMBR});
        ViewBag.Items = new SelectList(q.AsEnumerable(), "ITEMNMBR", "ITEMNMBR");
        ViewBag.CALLNBR = call;
        return View();
    }

    public ActionResult GetPartDesc(char itemnmbr)
    {
        var iv101 = db.IV00101.FirstOrDefault(i => i.ITEMNMBR.Contains(itemnmbr));
        string desc = iv101.ITEMDESC;
        return Content(desc);
    }

Firefox エラー コンソールは次を返します。

タイムスタンプ: 12/28/2012 2:40:29 PM 警告: 属性の指定された属性の使用は非推奨です。常に true を返します。ソース ファイル: http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.6.4.min.js行: 2

タイムスタンプ: 12/28/2012 2:40:34 PM 警告: getAttributeNode() の使用は非推奨です。代わりに getAttribute() を使用してください。ソースファイル: ~/Scripts/jquery-1.6.4.min.js 行: 3

Firefox Web コンソールは、これら 2 つに加えて以下を返します (上記 2 つの間に位置します)。

リクエスト URL: ~/PartsLabor/GetPartDesc?002N02337 リクエスト方法: GET ステータス コード: HTTP/1.1 500 内部サーバー エラー

4

1 に答える 1

1

あなたは正しい軌道に乗っていると思います。get() の使用方法については、このページの例を確認してください。

GetPartDesc がヒットしないか、期待するパラメーターを取得していないと推測します。次のように変更すると、おそらく機能します。

        $.get("/PartsLabor/GetPartDesc", $(this).val(), function (data) {
            $("#ITEMDESC").val(data);
        });

に:

        $.get("/PartsLabor/GetPartDesc", { itemnmbr: $(this).val() }, function (data) {
            $("#ITEMDESC").val(data);
        });

しかし、私はそれをテストしていません。また、私は個人的にこの種のものに jquery .ajax メソッドを使用しています。私は get を使ったことはありませんが、少し読むだけでうまくいくはずです。とにかく、次のようなことを試すことができます:

    $.ajax({
            url: '/PartsLabor/GetPartDesc',
            data: { itemnmbr: $(this).val() }
        }).done(function (data) {
            $("#ITEMDESC").val(data);
        });
于 2012-12-28T15:14:36.673 に答える