【问题标题】:How to call C# function with ASP.NET MVC如何使用 ASP.NET MVC 调用 C# 函数
【发布时间】:2017-04-09 18:28:42
【问题描述】:

我开始学习 ASP.NET 并尝试检查文本框的格式是否正确。我可以检查格式是否正确,但我不知道如何连接前端的 cshtml 和后端的 cs。下面是我的 Index.cshtml 代码

@{
    ViewData["Title"] = "Home Page";
}

<div>
    <h2>Robot Control Main Page</h2>
    <div class="row">
        <div class="col-md-2 col-md-offset-5">
            <span>
                <input type="text" size="20" name="ipAddr" placeholder="IP Address">
                <input type="button" name="btn_confirm" value="Confirm" onclick="CheckValidIP()">
            </span>
        </div>
    </div>
</div>

这是我的 C# HomeController 类中的函数。

//From my C# class
public ActionResult CheckValidIP()
{
    return View();
}

如何将按钮单击连接到 C# 函数并让相同的 C# 函数访问跨度中的文本变量输入?

【问题讨论】:

  • 你需要从基础学习。检查这个MS官方链接docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/…
  • 这样不行。 MVC 与 WebForms 有不同的概念。您可以编写 JavaScript 函数来验证浏览器中的输入,或者将模型发布到操作中并验证操作中的值。没有简单的方法来判断从 cshtml 输入要执行什么 C# 函数。

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

您正在寻找的东西在 Asp.Net MVC 中称为“远程验证”。

首先确保在您的 web.config 中启用客户端验证。

<appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

第二在您的控制器中创建将返回 JsonResult 的验证方法。

public class ValidationController : Controller 
{
    public JsonResult CheckValidIP(string clientIP) 
    {
        //your validation code here
        if (!_repository.AllowIp(clientIP))
            return Json(true, JsonRequestBehavior.AllowGet);
        else
            return Json(false, JsonRequestBehavior.AllowGet);
    }
}

第三 在模型中插入[Remote] 属性。第一个参数是Action,第二个参数是Controller

public class CreateUserModel : EditUserModel {
    [Remote("CheckValidIP", "Validation")]
    public override string ClientIP { get; set; }
}

最后但同样重要的是,您必须使用 Html Helper 来生成带有 javascript 的 html 等等。

@model RemoteValidation.Models.SampleModel

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

    <div class="form-horizontal">
        <h4>Remote Validation</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.ClientIp, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.ClientIp, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.ClientIp, "", 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>
}

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

这是一个正在运行的示例应用程序,只有远程验证,这里 => https://github.com/ricardodemauro/AspNetMVCRemoteValidation

RemoteAttribute 类创建一个字符串,该字符串表示用于调用基于服务器的验证的 URL。然后,ASP.NET MVC 框架为 URL 提交 JSON 编码的 GET 请求。 在本例中,如果用户在客户端 IP 文本输入框中输入“127.0.0.1”,客户端将请求以下 URL: /Validation/CheckValidIP?ClientIP=127.0.0.1

在这里您可以找到更多详细信息 => https://msdn.microsoft.com/en-us/library/gg508808(vs.98).aspx

【讨论】:

    【解决方案2】:

    您想要做的方式非常特别,我建议您了解验证在 MVC 中的工作原理。但是,如果您必须验证服务器上的字段,则需要使用此处解释的远程验证:How to: Implement Remote Validation in ASP.NET MVC

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 2011-05-18
      • 2011-02-20
      • 2017-03-30
      相关资源
      最近更新 更多