我想获取客户端机器的 IP 地址,然后为其分配一个名称。假设它是 192.168.7.12,那么该工作站将具有名称“Head Board Assembly”,然后将其传递回布局 View 。分配名称位不是问题,但是,我想将最终值传递给主布局,而不是重复下面的代码。忽略服务器 IP 方法,它在本地主机上处于早期阶段。
HomeController.cs
public class HomeController : Controller
{
[Authorize]
public ActionResult Index()
{
ViewBag.HtmlStr = "Workstation name: " + IP();
return View();
}
[Authorize]
public ActionResult Tutorial()
{
ViewBag.HtmlStr = "Workstation name: " + IP();
return View();
}
[Authorize]
public ActionResult Contact()
{
ViewBag.HtmlStr = "Workstation name: " + IP();
return View();
}
public string IP()
{
string myHost = System.Net.Dns.GetHostName();
string myIP = null;
for (int i = 0; i <= System.Net.Dns.GetHostEntry(myHost).AddressList.Length - 1; i++)
{
if (System.Net.Dns.GetHostEntry(myHost).AddressList[i].IsIPv6LinkLocal == false)
{
myIP = System.Net.Dns.GetHostEntry(myHost).AddressList[i].ToString();
}
}
return myIP;
}
布局.cshtml
<section id="login">
<p>@ViewBag.HtmlStr</p>
</section>
我觉得我每次都在重复自己添加相同的代码部分,然后必须将方法和代码调用到其他 Controller 中,因为布局从每个 Controller 方法调用 View 包。
我觉得肯定会有更好的方法,因此我想在布局母版中分配 IP 名称并设置一次。我不知道如何去做,因为布局非常适合布局。我还用谷歌搜索了一下哈哈
最佳答案
您似乎想要创建某种静态辅助方法,它不仅可以获取 IP 地址,还可以执行一些自定义逻辑。然后你可以在布局中的任何地方调用它。
“假设它是 192.168.7.12,那么该工作站的名称将是“Head Board Assembly”
namespace MyApp.Helpers
{
public static class GetIP
{
public static string AssignedIPName()
{//do custom logic
}
}
}
欢迎@MyApp.Helpers.GetIP.AssignedIPName()。
关于c# - 将变量添加到布局页面 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29354644/