asp.net mvc获取访问者IP根据IP获取城市地址跳转到相应的页面 求大神!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net mvc获取访问者IP根据IP获取城市地址跳转到相应的页面 求大神!相关的知识,希望对你有一定的参考价值。

参考技术A 给你一个获取IP的代码,然后根据获取的地区名去数据库匹配对应的城市或二级域名即可。

#region 获取IP
/// <summary>
/// 客户端ip(访问用户)
/// </summary>
public static string GetUserIp

get

string realRemoteIP = "";
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)

realRemoteIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(',')[0];

if (string.IsNullOrEmpty(realRemoteIP))

realRemoteIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

if (string.IsNullOrEmpty(realRemoteIP))

realRemoteIP = System.Web.HttpContext.Current.Request.UserHostAddress;

return realRemoteIP;

本回答被提问者采纳

ASP.NET MVC 获取文本框输入值

【中文标题】ASP.NET MVC 获取文本框输入值【英文标题】:ASP.NET MVC get textbox input value 【发布时间】:2013-09-23 06:20:08 【问题描述】:

我有一个文本框输入和一些单选按钮。例如,我的文本框输入 HTML 如下所示:

<input type="text" name="IP" id="IP" />

一旦用户单击网页上的按钮,我想将数据传递给我的控制器:

<input type="button" name="Add" value="@Resource.ButtonTitleAdd"  onclick="location.href='@Url.Action("Add", "Configure", new  ipValue =@[ValueOfTextBox], TypeId = 1 )'"/>

也许这很简单,但我的问题是我不知道如何获取文本框值并将其传递给控制器​​。如何读取文本框值并通过ipValue=@[ValueOfTextBox] 将其传递给控制器​​?

【问题讨论】:

【参考方案1】:

你可以做到这么简单:

首先:例如在 Models 中,你有 User.cs 和这个实现

public class User
 
   public string username  get; set; 
   public string age  get; set; 
  

我们将空模型传递给用户——当他像这样提交表单时,该模型将填充用户的数据

public ActionResult Add()

  var model = new User();
  return View(model);

当您通过空用户返回视图作为模型时,它会映射到您实现的表单的结构。我们在 HTML 方面有这个:

@model MyApp.Models.Student
@using (Html.BeginForm()) 
 
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Student</h4>
        <hr />
        @Html.ValidationSummary(true, "", new  @class = "text-danger" )
        <div class="form-group">
            @Html.LabelFor(model => model.username, htmlAttributes: new  
                           @class = "control-label col-md-2" )
            <div class="col-md-10">
                 @Html.EditorFor(model => model.username, new  
                                 htmlAttributes = new  @class = "form-
                                 control"  )
                 @Html.ValidationMessageFor(model => model.userame, "", 
                                            new  @class = "text-danger" )
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.age, htmlAttributes: new  @class 
                           = "control-label col-md-2" )
            <div class="col-md-10">
                @Html.EditorFor(model => model.age, new  htmlAttributes = 
                                new  @class = "form-control"  )
                @Html.ValidationMessageFor(model => model.age, "", new  
                                           @class = "text-danger" )
            </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>

所以在按钮提交时你会像这样使用它

[HttpPost]
public ActionResult Add(User user)
 
   // now user.username has the value that user entered on form
 

【讨论】:

【参考方案2】:

你可以使用 jQuery:

<input type="text" name="IP" id="IP" value=""/>
@Html.ActionLink(@Resource.ButtonTitleAdd, "Add", "Configure", new  ipValue ="xxx", TypeId = "1" , new @class = "link")

<script>
  $(function () 
    $('.link').click(function () 
      var ipvalue = $("#IP").val();
      this.href = this.href.replace("xxx", ipvalue);
    );
  );
</script>

【讨论】:

【参考方案3】:

使用ajax方法的另一种方式:

查看:

@Html.TextBox("txtValue", null, new  placeholder = "Input value" )
<input type="button" value="Start" id="btnStart"  />

<script>
    $(function () 
        $('#btnStart').unbind('click');
        $('#btnStart').on('click', function () 
            $.ajax(
                url: "/yourControllerName/yourMethod",
                type: 'POST',
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                data: JSON.stringify(
                    txtValue: $("#txtValue").val()
                ),
                async: false
            );
       );
   );
</script>

控制器:

[HttpPost]
public EmptyResult YourMethod(string txtValue)

    // do what you want with txtValue
    ...

【讨论】:

每次我在操作方法中得到 txtValue 为空【参考方案4】:

试试这个。

查看:

@using (Html.BeginForm("Login", "Accounts", FormMethod.Post)) 

   <input type="text" name="IP" id="IP" />
   <input type="text" name="Name" id="Name" />

   <input type="submit" value="Login" />

控制器:

[HttpPost]
public ActionResult Login(string IP, string Name)

    string s1=IP;//
    string s2=Name;//

如果可以使用模型类

[HttpPost]
public ActionResult Login(ModelClassName obj)

    string s1=obj.IP;//
    string s2=obj.Name;//

【讨论】:

【参考方案5】:

带有电子邮件文本框的简单 ASP.NET MVC 订阅表单可以这样实现:

型号

表单中的数据映射到这个模型

public class SubscribeModel

    [Required]
    public string Email  get; set; 

查看

视图名称应与控制器方法名称匹配。

@model App.Models.SubscribeModel

@using (Html.BeginForm("Subscribe", "Home", FormMethod.Post))

    @Html.TextBoxFor(model => model.Email)
    @Html.ValidationMessageFor(model => model.Email)
    <button type="submit">Subscribe</button>

控制器

控制器负责处理请求并返回正确的响应视图。

public class HomeController : Controller

    public ActionResult Index()
    
        return View();
    

    [HttpPost]
    public ActionResult Subscribe(SubscribeModel model)
    
        if (ModelState.IsValid)
        
            //TODO: SubscribeUser(model.Email);
        

        return View("Index", model);
    

这是我的项目结构。请注意,“Home”视图文件夹与 HomeController 名称匹配。

【讨论】:

如果我需要传递除文本框值之外的多个参数,例如,在控制器中标识某物类型的数字,这可以用你的方法吗?如果是这样,你能告诉我怎么做吗? @AndreiMikhalevich 你能举个例子吗? @user3132179 唯一的区别是你需要将 [HttpPost] 属性放在一个动作上,并且显然在表单中使用 Post 方法。 C# 视图(m =&gt; m.FirstName)视图和控制器@Html.TextBox("name")。 Html.TextBox“名称”是否需要与 UserModel 变量匹配?如果不是,这些页面值如何映射到正确的对象属性?

以上是关于asp.net mvc获取访问者IP根据IP获取城市地址跳转到相应的页面 求大神!的主要内容,如果未能解决你的问题,请参考以下文章

如何在asp.net mvc中使用IP地址获取地理位置

当服务器位于 AWS ELB 之后时,ASP.NET Core MVC 应用程序如何获取客户端 IP 地址?

Asp.Net MVC3:使用Javascript的客户端IP地址[重复]

asp.net core获取客户端ip

asp.net 怎么获取客户端真实 IP?

在asp.net中使用"Request.UserHostAddress"为何获取的ip地址是::1?