【问题标题】:Add data from DropdownList to table(ASP.NET MVC)将 DropdownList 中的数据添加到表中(ASP.NET MVC)
【发布时间】:2017-08-24 11:09:36
【问题描述】:

我有公司表和空缺职位。

公司有一些职位空缺

我有这样的视图

所以我选择了公司,第二个下拉列表会根据公司进行更新。

这里是查看代码(DropdownList 部分)

 <div class="right-grid-in-grid" style="width:100%;">
                <div style="margin-left:20px;width:50%; ">
                    @Html.DropDownList("Company", ViewBag.Companies as SelectList, new { @class = "greeting" })
                    @Html.ValidationMessageFor(model => model.VacancyId, "", new { @class = "text-danger" })
                </div>
                <div style="margin-left:20px;width:100%">
                    <select name="id" id="vacancy" style="width:55%" class="greeting" data-url="@Url.Action("Vacancies","Questions")" />
                </div>

这是 AJAX 请求的代码

 $(function () {
        $("#Company").change(function (e) {
            var $vacancy = $("#vacancy");
            var url = $vacancy.data("url") + '?companyId=' + $(this).val();
            $.getJSON(url, function (items) {
                $.each(items, function (a, b) {
                    $vacancy.append('<option value="' + b.Value + '">' + b.Text + '</option>');
                });
            });
        });
    });

这是控制器代码

 public ActionResult WelcomeScreen()
    {
        // Формируем список команд для передачи в представление
        //SelectList teams = new SelectList(db.Vacancy, "VacancyId", "VacancyName");
        //ViewBag.Teams = teams;

        ViewBag.Companies = new SelectList(db.Companies, "CompanyID", "CompanyName");
        return View();
    }


    //Заносим инфу о вакансии в таблицу
    [HttpPost]
    public ActionResult WelcomeScreen(Interview interview)
    {
        db.Interview.Add(interview);
        db.SaveChanges();

        return RedirectToAction("Index", "Questions", new { id = interview.Interview_Id });
    }

我的问题 - 我需要从第二个下拉列表中获取 VacancyId 并将其写入表格。

所有其他数据都写得很好。

不只写VacancyId

这是表格代码

CREATE TABLE [dbo].[Interviews] (
[Interview_Id] INT            IDENTITY (1, 1) NOT NULL,
[Greeting]     NVARCHAR (MAX) NULL,
[Detail]       NVARCHAR (MAX) NULL,
[VacancyId]    INT            NULL,
PRIMARY KEY CLUSTERED ([Interview_Id] ASC),
CONSTRAINT [FK_Interviews_ToTable] FOREIGN KEY ([VacancyId]) REFERENCES [dbo].[Vacancies] ([VacancyId]) ON DELETE CASCADE);

【问题讨论】:

  • 据我了解,您需要从第二个 DDL 中获取所选值。这很简单。只需使用 document.getElementById('whateveryouhavegiven').value。然后将其包含在 AJAX 调用中并在后端代码中处理
  • 有些喜欢VacancyId: $('#vacancy').val(), ?@It'satrap
  • 我不确定 Jquery 语法。但是是的,只有
  • 什么是VacancyId?您的表单不会为该属性创建表单控件。你所拥有的只是&lt;select&gt;name="id",而不是VacancyId。停止手动创建 html 并使用 HtmlHelper 方法绑定到您的模型。并参考this DotNetFiddle 了解如何正确实现级联下拉列表
  • 首先,ValidationMessageFor 不能仅使用 select 标签 - 它应该有 DDL 助手:@Html.DropDownListFor(model =&gt; model.VacancyId, ViewBag.Vacancies as SelectList, new { @id = "vacancy", @data_url = Url.Action("Vacancies","Questions")}),在 JS 中:var vacancy = $("#vacancy").val();。公司 DDL 也应该绑定模型:@Html.DropDownListFor(m =&gt; m.Company, ViewBag.Companies as SelectList, new { @id = "Company", @class = "greeting" }).

标签: c# asp.net ajax asp.net-mvc asp.net-mvc-4


【解决方案1】:

谢谢大家。我昨天解决了我的问题

这里是如何使用 AJAX 实现这一点的代码,在这个 AJAX 调用中,我们从字段中获取值并将它们传递给后端。

这里是 AJAX 代码:

 <script>
    $(document).ready(function () {
    $('#save').click(function () {
        save();
    });
});
    function save() {
        $.ajax({
            type: 'Post',
            dataType: 'Json',
            data: {
                Detail: $('#Detail').val(),
                Greeting: $('#Greeting').val(),
                id: $('#vacancy').val(),


            },
            url: '@Url.Action("WelcomeScreenPost", "Questions")',
            success: function (da) {
                if (da.Result === "Success") {

                    window.location.href = da.RedirectUrl;

                } else {

                    alert('Error' + da.Message);
                }
            },
            error: function (da) {
                alert('Error');
            }
        });
    }
</script>

在后端,我们将在 Controller 操作方法中编写它。

 [HttpPost]
   public ActionResult WelcomeScreenPost(string Detail, string Greeting, int id)
    {
        Interview inter = new Interview
        {

            Greeting = Greeting,
            Detail = Detail,
            VacancyId = id,
        };
        db.Interview.Add(inter);
        db.SaveChanges();
        var urlBuilder = new UrlHelper(Request.RequestContext);
        var url = urlBuilder.Action("Index", "Questions", new { id = inter.Interview_Id });
        return Json(new { Result = "Success", Message = "Saved Successfully", RedirectUrl = url });
    }

一切都会好起来的。

【讨论】:

  • 在您的问题中,您在哪里声明您想使用 ajax?当你想重定向时使用 ajax 简直是疯了。给自己买一本好书并学习基础知识(并学习我在上面的链接中给你的 DotNetFiddle)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2016-12-10
相关资源
最近更新 更多