2016-05-22 4 views
3

こんにちは私はローカルホストの後にポップアップウィンドウを使用してデータがdbに保存されていないという1つの問題があります。私は私の問題をはっきりと説明します。私は顧客と呼ばれる1つのビューを持っています。その中に私はAreaと呼ばれる1つのフィールドがあり、またそのフィールドの近くに1つの追加ボタンを保持します。ローカルホストmvc4にアプリケーションを公開した後、ポップアップウィンドウを使用してデータがdbに保存されませんか?

エリア

enter image description here

私はそれがポップアップウィンドウを開きます+]ボタンをクリックしてください。ポップウィンドウは、私がアプリケーションをビルドして実行し、このビューを開き、+ボタンをクリックすると、すべての詳細を入力して保存ボタンをクリックすると

エリアポップwinodw

enter image description here

下に言及しています値をdbに保存します。すべて正常に動作しています。しかし、私のアプリケーションを公開し、このビューを開いて+ボタンをクリックすると、ポップアップウィンドウが開きます。これまで、それはうまく動作します。しかし、すべての詳細を入力し、保存ボタンをクリックすると、Dbにデータが保存されません。これが問題です。私のアプリケーションを公開した後、データはポップアップウィンドウを使ってDbに保存されません。しかし、ノーマルでは完全に動作しています。 $( '#のエリアID')件までポップアップウィンドウ

enter image description here

にその作業を公開した後

追加。($( '')のval(データ)は.text(エリア)。);

ただし、保存はdbに保存されません。しかし、通常のアプリケーションでは、正常に動作しています。これは、通常のアプリケーションの実行中にポップアップを使用してデータを完全に処理していることを示しています。しかし、私はローカルホストで私のアプリケーションをホストした後、spopupウィンドウが正しく動作していません。

私のコードの表示

<div id="Area"> 
    <div class="col-sm-3"> 
    <span style="color: #f00">*</span> 
    @Html.LabelFor(model => model.Area, new { @class = "control-label" })<a href="#" class="btn btn-primary" id="modal-opener" style="float: right; Width: 28px; height: 28px; ">+</a> 
    <div id="dialog-modal" title="Add New Area" style="display:none"> 
    <div class="box-body"> 
    <span class="red">*</span> 
    @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.DropDownListFor(model => model.CityID, new SelectList(string.Empty, "Value", "Text"), "Please select a City", new { @class = "form-control required", type = "text", id = "City" }) 
    <div class="box-footer"> 
    <input id="Button1" class="btn btn-primary" type="button" value="Save" onclick="SaveArea()" /> 
    </div> 
    </div> 
    </div> 
    @Html.DropDownList("AreaID", null, "Select", new { @class = "form-control required" }) 

    </div> 
    </div> 

マイJクエリコード

<script type="text/javascript"> 

    $(function() { 
    debugger 
    $("#dialog-modal").dialog({ 
     resizable: false, 
     width: 500, 
     maxHeight: 400, 
     draggable: true, 
     dialogClass: 'main-dialog-class', 
     autoOpen: false, 
     show: { 
      effect: "blind", 
      duration: 1000 

     }, 
     hide: { 
      effect: "explode", 
      duration: 1000 
     }, 
     open: function() { 
      var closeBtn = $('.ui-dialog-titlebar-close'); 
      closeBtn.append('<span class="ui-button-icon-primary ui-icon ui-icon-closethick"></span>'); 
     }, 
     close: function() { 
      var closeBtn = $('.ui-dialog-titlebar-close'); 
      closeBtn.html(''); 
     }, 
    }); 
    $("#modal-opener").click(function() { 
     debugger 
     $("#dialog-modal").dialog("open"); 
    }); 
}); 
function onSuccess() { 
    $("#dialog-modal").dialog("close"); 
} 


     function SaveArea() { 
      debugger 
      var url = '@Url.Action("Customer", "AddAreaInfo", new { area = "Sales" })'; 
      var customerContact = $('#modalform').serialize(); // must have a <form id="modalform"> in the popup 
      var Area = $("#AreaName").val(); 
      var CityID = $("#City").val(); 
      var AreaAdd = { "Area": '' + Area + '', "CityID": CityID }; 
      $.post("/Sales/Customer/AddAreaInfo", AreaAdd, function (data) { 
        $('#AreaID').append($('<option><option>').val(data).text(Area)); 
       $('#AreaID').val(data); 
       alert ("Success") 
      }); 
     } 


     $(function() { 
      $.ajax(
      '@Url.Action("GetCity", "Customer", new { Area = "Sales" })',{ 
        type: "GET", 
        datatype: "Json", 
        success: function (data) { 
        $.each(data, function (index, value) { 
        $('#City').append('<option value="' + value.CityID + '">' +value.DisplayName + '</option>'); 
       }); 
       } 
      }); 
     }); 

コントローラ

 public JsonResult AddAreaInfo(CustomerViewModel objareaVM) 
     { 
     var objAreaID = Guid.NewGuid(); 
     ViewBag.CityID = new SelectList(db.Cities, "CityID", "DisplayName", objareaVM.CityID); 

     var ObjArea = new Area() 
     { 
      AreaID = objAreaID, 
      DisplayName = objareaVM.Area, 
      PrintName = objareaVM.Area, 
      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(objAreaID); 

    }  

    public JsonResult GetCity() 
    { 
     return Json(db.Cities.ToList(), JsonRequestBehavior.AllowGet); 
    } 

答えて

0

私自身は明らかに私の問題。私は私の答えを共有したい。なぜDBに保存されていないのかは、j-queryのコントローラへのパスが正しくないことです。

最後に、私は私が今

var url = '@Url.Action(" Customer", "AddAreaInfo", new { area = "Sales" })'; 

私のように私の道を与えた前に答えが

Jクエリコード

function SaveArea() { 
      debugger 
      var url = '@Url.Action("AddAreaInfo", "Customer", new { area = "Sales" })'; 
      var customerContact = $('#modalform').serialize(); // must have a <form id="modalform"> in the popup 
      var Area = $("#AreaName").val(); 
      var CityID = $("#City").val(); 
      var AreaAdd = { "Area": '' + Area + '', "CityID": CityID }; 
      $.post(url, AreaAdd, function (data) { 
        $('#AreaID').append($('<option><option>').val(data).text(Area)); 
       $('#AreaID').val(data); 
       alert ("Success") 
      }); 
     } 

である私のJ-クエリコード

を修正それを

0123に変更してください
var url = '@Url.Action("AddAreaInfo", "Customer", new { area = "Sales"})'; 

この問題は解決され、最後にDBにデータが保存されます。

関連する問題