如何在ASP.Net MVC中的View中的View Model中将项添加到列表中?

时间:2016-07-14 02:05:02

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

我希望有人能指出我正确的方向。我想添加到表单中的项目列表。我已经搜索了几天,并尝试了很多不同的东西,我已经忘记了我所做的所有事情。我的智慧结束了。

我尝试过的一些事情: 我在这里引用了几个答案,引用了5年前的一篇文章,我试过但是无法开始工作。 我尝试使用ajax 我尝试使用带部分视图的ajax

我希望有人能帮助我。

我有一个像这样的ViewModel:

public class CustomerFormViewModel
{
    public Customer Customer { get; set; }

    [Remote("DoesCustomerExist", "Customers", HttpMethod = "POST", ErrorMessage = "There is already a customer by that name. Please enter another name.")]
    public string CustomerName
    {
        get { return Customer.Name; }
        set { Customer.Name = value; }
    }

    public IEnumerable<Key> Keys { get; set; }

    public List<int> KeyIds = new List<int>();
 }

Customer模型如下所示:

public class Customer
{
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public string Name { get; set; }

    public string Address { get; set; }

    public string Country { get; set; }

    public DateTime DateAdded { get; set; }
}

基本上,在我看来,我想显示一个表单,其中管理员输入客户详细信息,然后单击“添加密钥”按钮将项目添加到“KeyIds”列表中。

我的观点是这样的:

@model LowKey.ViewModels.CustomerFormViewModel
@{
    ViewBag.Title = "CustomerForm";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>@Model.Title</h2>

@using (Html.BeginForm("Save", "Customers"))
{
    <div id="customers">
        <div class="form-group">
                @Html.LabelFor(o => o.Customer.Name)
                @Html.TextBoxFor(o => o.Customer.Name, new {@class = "form-control"})
                @Html.ValidationMessageFor(o => o.Customer.Name, "", new {@class = "text-danger"})
        </div>
   </div>
}

也许我的域模型没有正确设置,或者我的viewmodel可能不同,但我尝试使用KeyList的部分视图,但我似乎无法让它工作。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您工作的最佳解决方案是:

  1. 曲奇

    使用Cookies! 因为你有访问cookie形式ASP(服务器端)和JavaScript(客户端)。 所以只需将您的数据添加到cookie!只需要了解如何在c#和javascript中使用Cookie,c#的此链接以及javascript的此链接。

  2. 使用Ajax 你可以使用jquery ajax将你的客户信息发送到服务器端(通过jquery和ajax)然后你将这些信息保存在数据库中(通过asp.net c#)。此链接用于了解如何使用jquery ajax

  3. 发送信息