Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在mvc4中,如何将数据从部分视图传递到操作后方法?_C#_Jquery_Ajax_Asp.net Mvc 4 - Fatal编程技术网

C# 在mvc4中,如何将数据从部分视图传递到操作后方法?

C# 在mvc4中,如何将数据从部分视图传递到操作后方法?,c#,jquery,ajax,asp.net-mvc-4,C#,Jquery,Ajax,Asp.net Mvc 4,您好,我有一个视图名为客户。在该视图中,我有一个字段名为区域。我在该区域附近保留了一个添加按钮。假设如果区域不在列表中,则意味着我单击了添加按钮,它将以弹出窗口的形式打开AreaPartialView 现在我有一个问题。也就是说,数据没有从局部视图传递到控制器的后操作方法 我的型号 public Nullable<System.Guid> AreaID { get; set; } public string Area { get; set; } public

您好,我有一个视图名为客户。在该视图中,我有一个字段名为区域。我在该区域附近保留了一个添加按钮。假设如果区域不在列表中,则意味着我单击了添加按钮,它将以弹出窗口的形式打开AreaPartialView

现在我有一个问题。也就是说,数据没有从局部视图传递到控制器的后操作方法

我的型号

    public Nullable<System.Guid> AreaID { get; set; }
    public string Area { get; set; }
    public Nullable<System.Guid> CityID{ get; set; }
    public string  City { get; set; }
我的观点

   <div id="Area">
   <div class="col-sm-4">
   <div class="form-group">
   @Html.LabelFor(model => model.Area, new { @class = "control-label"})
   @Html.DropDownList("AreaID", null, "Select", new { @class = "form-control required" })
   <button id="AddArea">Area</button>
   <div id="AddAreaNew"></div>
            </div>
          </div>
       </div>
   @Html.Label("Area" , new { @class = "control-label" })
   @Html.TextBoxFor(model => model.Area, new { @class = "form-control", type = "text" ,id ="AreaName"})
   @Html.ValidationMessageFor(model => model.Area)


  @Html.Label("City")        
  @Html.DropDownList("CityID", null, "Select", new { @class = "form-control " })


  <script src="~/Scripts/jquery-1.10.4-ui.min.js"></script>
  <link href="~/Content/jquery-ui-1.10.4.custom.min.css" rel="stylesheet" />
  <script src="~/Scripts/jquery-ui-1.8.24.min.js"></script>
  <script type="text/javascript">
  function SaveArea() {
    var Area = $("#AreaName").val();
    var CityID = $("#CityID").val();
    alert(Area);
    var AreaAdd = {
        "AreaName": Area, "CityID": CityID
                };
    alert(AreaAdd.AreaName);
    alert(AreaAdd.CityID);

    $.post("/Customer/AddAreaInfo", AreaAdd,
    function (data) { if (data == 0) { location = location.href; } }, 'json').success(function (data) {

        alert("success");
        //window.close();
    });
 }
</script>

@LabelFor(model=>model.Area,新的{@class=“control label”})
@DropDownList(“AreaID”,null,“Select”,new{@class=“form control required”})
地区
我的j-query

   <script src="~/Scripts/jquery-1.10.2-ui.js"></script>
   <link rel="stylesheet"href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />

    <script type="text/javascript">
   $("#AddArea").click(function () {
       $('#AddAreaNew').dialog("open");
     });
  $(function () {
       $('#AddAreaNew').dialog({
           autoOpen: false,
           width: 400,
           height: 500,
           resizable: false,
           title: 'Add Area',
           modal: true,
           open: function (event, ui) {
               $(this).load("@Url.Action("AreaPartialView", "Customer")");
           },
           buttons: {
               "Close": function () {
                   $(this).dialog("close");
               }
           }
       });
   });

$(“#添加区域”)。单击(函数(){
$('#AddAreaNew')。对话框(“打开”);
});
$(函数(){
$('#AddAreaNew')。对话框({
自动打开:错误,
宽度:400,
身高:500,
可调整大小:false,
标题:“添加区域”,
莫代尔:是的,
打开:功能(事件、用户界面){
$(this.load(@Url.Action(“AreaPartialView”、“Customer”));
},
按钮:{
“关闭”:函数(){
$(此).dialog(“关闭”);
}
}
});
});
我的局部观点

   <div id="Area">
   <div class="col-sm-4">
   <div class="form-group">
   @Html.LabelFor(model => model.Area, new { @class = "control-label"})
   @Html.DropDownList("AreaID", null, "Select", new { @class = "form-control required" })
   <button id="AddArea">Area</button>
   <div id="AddAreaNew"></div>
            </div>
          </div>
       </div>
   @Html.Label("Area" , new { @class = "control-label" })
   @Html.TextBoxFor(model => model.Area, new { @class = "form-control", type = "text" ,id ="AreaName"})
   @Html.ValidationMessageFor(model => model.Area)


  @Html.Label("City")        
  @Html.DropDownList("CityID", null, "Select", new { @class = "form-control " })


  <script src="~/Scripts/jquery-1.10.4-ui.min.js"></script>
  <link href="~/Content/jquery-ui-1.10.4.custom.min.css" rel="stylesheet" />
  <script src="~/Scripts/jquery-ui-1.8.24.min.js"></script>
  <script type="text/javascript">
  function SaveArea() {
    var Area = $("#AreaName").val();
    var CityID = $("#CityID").val();
    alert(Area);
    var AreaAdd = {
        "AreaName": Area, "CityID": CityID
                };
    alert(AreaAdd.AreaName);
    alert(AreaAdd.CityID);

    $.post("/Customer/AddAreaInfo", AreaAdd,
    function (data) { if (data == 0) { location = location.href; } }, 'json').success(function (data) {

        alert("success");
        //window.close();
    });
 }
</script>
@Html.Label(“区域”,新的{@class=“control Label”})
@Html.TextBoxFor(model=>model.Area,新的{@class=“formcontrol”,type=“text”,id=“AreaName”})
@Html.ValidationMessageFor(model=>model.Area)
@Html.Label(“城市”)
@DropDownList(“CityID”,null,“Select”,new{@class=“form control”})
函数SaveArea(){
var Area=$(“#AreaName”).val();
var CityID=$(“#CityID”).val();
警戒区;
变量区域添加={
“区域名称”:区域,“城市ID”:城市ID
};
警报(AreaAdd.AreaName);
警报(AreaAdd.CityID);
$.post(“/Customer/AddAreaInfo”,区域添加,
函数(数据){if(数据==0){location=location.href;}}},'json').success(函数(数据){
警惕(“成功”);
//window.close();
});
}
如果我单击“添加”按钮区域,局部视图将作为弹出窗口打开,如果我输入详细信息并单击“创建”按钮,它将获得值并显示所有警报消息。但问题是它没有将面积值传递给post action方法,它传递了城市ID值,但没有将面积值传递给post方法。面积值将始终为空

请任何人核对我的代码并告诉我解决方案


提前感谢…

我不熟悉asp.net,请尝试此更改

 var AreaAdd = { Area: Area, CityID: CityID };
或者使用
FormCollection

 public ActionResult AddAreaInfo(FormCollection objareaVM)
   {
        var objAreaID = Guid.NewGuid();
        ViewBag.CityID = new SelectList(db.Cities, "CityID", "DisplayName", objareaVM["CityID"]);

      var ObjArea = new Area()
        {
            AreaID =objAreaID,
            DisplayName = objareaVM["AreaName"],
            PrintName = objareaVM["AreaName"],
            CityID = objareaVM["CityID"],
            IsActive = true,
            IsDeleted = false,
            CreatedDate = DateTime.Now,
            EditedDate = DateTime.Now,
            LastActiveOn = DateTime.Now,
            RowID = Guid.NewGuid(),
            CreatedSessionID = Guid.NewGuid(),
            EditedSessionID = Guid.NewGuid(),
            OfflineMode = false,
            OfflineID = Guid.NewGuid()
        };

        db.Areas.Add(ObjArea);
        db.SaveChanges();
        ModelState.Clear();

        return Json("Customer", JsonRequestBehavior.AllowGet);

 }

查看您的模型类,您有类属性的“区域”名称

public string Area { get; set; }
而且你发布的区域带有“AreaName”,所以它是不正确的

   var AreaAdd = {
    "AreaName": Area, "CityID": CityID
            };
现在更改部分视图Jquery代码:

    var AreaAdd = {
    "Area": Area, "CityID": CityID
            };

这将为您带来好处:

var AreaAdd = {Area:"your area", CityID:"your city id"};

实际上,在mvc中,名称应该与模型属性的名称完全相同。

使用ajax获取并将面积值传递给控制器,返回基于面积值的视图,CityId也使用ajax,但获取相同的问题其可能的madalin将显示错误。因为在那个地方,我们将正确地引用模型。根据我所能告诉的,在asp.net中,传递给控制器(AreaAdd)的javascript对象名为objareaVM。如果我错了,请告诉我。Madalin流程是,如果数据首先传递给模型,然后只传递给控制器。所以我们必须在controller中传递模型名,我们不能传递在j查询中给出的obj名,据我所知,这在mvc4中是正确的。你在用ajax数据
AreaAdd
?做什么,如果你使用的是模型中的数据,为什么要传递它?首先,我们获取特定对象var Area=$(“#AreaName”)中的数据.val();var CityID=$(“#CityID”).val();然后在单个对象变量AreaAdd={“AreaName”:Area,“CityID”:CityID}中分配两个数据;然后我们将这个AreaAdd传递给控制器的post-action方法,看看URLs,但是我给了id作为AreaName chiragOk现在使用:var AreaAdd={“Area”:AreaAdd.AreaName,“CityID”:CityID};它会工作的。没有chirag它不工作它没有使用后期操作方法根据我的代码它在var AreaAdd={“AreaName”:Area,“CityID”:CityID}中获取值;它显示警报消息。但它没有通过值控制器。它传递城市id但不传递区域值这是我的问题请尝试以下('):var AreaAdd={“AreaName”:“+area+”,“CityID”:CityID};kayani它完全改变了我给出的输出,就像你提到的一样,它将面积的值传递为AreaName(我的AreaField ID名称)和CityID传递给city Field。它非常不言自明,你可以修改它以满足你的需要