2017-09-13 15 views
0

クライアントマシンのIPアドレスを取得しようとしていますRequest.ServerVariables["HTTP_X_FORWARDED_FOR"];正常に動作しています。データベースに保存する方法訪問者のクライアントIPアドレスASP.Net MVCのマシン?

Cs.html ..ページのロード

public ActionResult AddCompany() 
     { 
      get_IP(); 
      return View(); 
     } 

get_IPコード

public void get_IP() 
     { 
      string ipAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
      if (string.IsNullOrEmpty(ipAddress)) 
      { 
       ipAddress = Request.ServerVariables["REMOTE_ADDR"]; 
      } 
      ViewBag.IPAddress = ipAddress; 
     } 

しかし、ユーザーがフォームを登録する際にIPアドレスの値は、データベースに保存したりというようにIPを取得します。ファイル

<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main"> 
    <h1 class="page-header">Add Company</h1> 

    @using (Html.BeginForm()) 
    { 
     @Html.AntiForgeryToken() 

     <div class="form-horizontal"> 
      @Html.ValidationSummary(true) 
      @Html.HiddenFor(model => model.IPAddress) 
      <div class="form-group"> 
       @Html.LabelFor(model => model.CompanyName, new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 
        @Html.EditorFor(model => model.CompanyName) 
        @Html.ValidationMessageFor(model => model.CompanyName) 
       </div> 
      </div> 

      <div class="form-group"> 
       @Html.LabelFor(model => model.ShortName, new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 
        @Html.EditorFor(model => model.ShortName) 
        @Html.ValidationMessageFor(model => model.ShortName) 
       </div> 
      </div> 

      <div class="form-group"> 
       @Html.LabelFor(model => model.Email, new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 
        @Html.EditorFor(model => model.Email) 
        @Html.ValidationMessageFor(model => model.Email) 
       </div> 
      </div> 

      <div class="form-group"> 
       @Html.LabelFor(model => model.Country, new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 
        @*@Html.EditorFor(model => model.Country)*@ 
        @Html.DropDownList("Country", null, "---Select Country----") 
        @Html.ValidationMessageFor(model => model.Country) 
       </div> 
      </div> 

      <div class="form-group"> 
       <b>State: </b> 
       <select id="state"></select><br /> 
      </div> 
      <div> 
       <b>City: </b> 
       <select id="city"></select><br /> 
      </div> 
      <div class="form-group"> 
       @Html.LabelFor(model => model.MobileNo, new { @class = "control-label col-md-2" }) 
       <div class="col-md-10"> 
        @Html.EditorFor(model => model.MobileNo) 
        @Html.ValidationMessageFor(model => model.MobileNo) 
       </div> 
      </div> 
      <div class="form-group"> 
       <div class="col-md-offset-2 col-md-10"> 
        <input type="submit" value="Create" class="btn btn-default" /> 
       </div> 
      </div> 
     </div> 
    } 

    <div> 
     @Html.ActionLink("Back to List", "Index") 
    </div> 
</div> 

AddCompany

私は1 隠された提出した値を作成しますが、ページのロードたIPAddress値Iが Ip値がデータベースに保存されていないボタンを保存するためにクリックし.after見せて..に

を働いていない。..

[HttpPost] 
     public ActionResult AddCompany(Company cmp) 
     { 
      using (DataContext entities = new DataContext()) 
      { 
       entities.Company.Add(cmp); 
       entities.SaveChanges(); 
       int id = cmp.CompanyID; 
       Session.Clear(); 
       Response.Redirect("Index"); 
      } 
      return View(cmp); 

     } 

データベースからクライアントIP Adrressを保存する方法任意のアイデア...

クラスファイル

[Table("MySecondMVCDemo")] 
    public class Company 
    { 
     [Key] 
     public int CompanyID { get; set; } 
     [Required(ErrorMessage = "Please Enter Company Name")] 
     [Display(Name = "CompanyName")] 
     public string CompanyName { get; set; } 
     [Required(ErrorMessage = "Please Enter Short Name")] 
     [Display(Name = "ShortName")] 
     public string ShortName { get; set; } 
     [Required(ErrorMessage = "Please Enter Email Address")] 
     [Display(Name = "Email")] 
     public string Email { get; set; } 
     [Required(ErrorMessage = "Please Enter Email Address")] 
     [Display(Name = "Country")] 
     public string Country { get; set; } 
     [Required(ErrorMessage = "Please Enter Mobile No")] 
     [Display(Name = "MobileNo")] 
     public string MobileNo { get; set; } 
     public Int32? IPAddress { get; set; } 
    } 

答えて

1

を取得するには、ここからのコードを使用してください、私は前にそれを使用していないので、私は約HiddenForを知りません。あなたはSR-のみは、それが隠されていることを確認するために、ブートストラップクラスを追加することができます

@Html.TextBoxFor(model => model.IPAddress, new { @class = "sr-only", @type = "hidden" }) 

:私は前にフィールドを隠しどのよう はこのようなものでした。 ブラウザのインス​​ペクタで、隠しフィールドに値があるかどうかを確認してください。

掲載してまだ保存されていない場合は、このようにそれを保存する前に、フォームフィールドの値にIPアドレスのアイデンティティを割り当てよう:

cmp.IPAddress = Request.Form["IPAddress"]; 
関連する問題