【问题标题】:How to submit http form using C# in DOTNET CORE [closed]如何在 DOTNET CORE 中使用 C# 提交 http 表单 [关闭]
【发布时间】:2019-11-03 07:14:17
【问题描述】:

我使用 c# 字符串生成器创建了一个 HTML 表单,使用参考:https://stackoverflow.com/a/37757601/7961948

在 dotnet 中,我们可以使用

提交此表单
Response.Write(formPostText);

但现在我使用的是 DOTNET CORE 2.1 并且 DOTNET CORE 不支持 dotnet 功能 所以还有其他方法可以提交表单

示例代码: 正在开发 dotnet 版本

     var formPostText = @"<html><body><div>
    <form method=""POST"" action=""OtherLogin.aspx"" name=""frm2Post"">
      <input type=""hidden"" name=""field1"" value=""" + TextBox1.Text + @""" /> 
      <input type=""hidden"" name=""field2"" value=""" + TextBox2.Text + @""" /> 
    </form></div><script type=""text/javascript"">document.frm2Post.submit();</script></body></html>
    ";

Response.Write(formPostText);

【问题讨论】:

  • Response.Write 不提交表单。假设您在 ASP.NET 应用程序中,它只会将一些文本写入响应对象,这可能会在浏览器中呈现。所以你的问题没有多大意义。
  • 如果您的目标是创建用户填写的 HTML 表单,并允许他们将该表单提交到您的服务器并捕获响应,那么您可能应该查看ASP.NET Core MVC 那里是一些很棒的教程。
  • 你的意思是要向客户端写入一些数据吗? “提交”和“表格”似乎是红鲱鱼。
  • 您需要明确说明什么不起作用。您所说的只是“不支持 dotnet 版本”,但您没有说出失败的原因。清楚你的问题。请记住,我们不知道您在做什么。我们不是坐在你的电脑前。您可以充分解释您的情况。

标签: c# .net-core asp.net-core-webapi asp.net-core-2.1


【解决方案1】:

不清楚您使用的是 MVC 还是 Web API,但无论哪种情况,在考虑如何使用 ModelState 验证来验证表单输入时,最好查看以下资源:

方法大致相同,但有一些变化。

关于您存储在formPostText 中的 HTML,您是否有任何理由使用字符串构建表单?我建议使用视图,因为这样做可以更好地将表示层与逻辑层分开。如果您必须生成原始 HTML 内容,您可以执行以下操作:

private string GetViewHtml(FormViewModel model)
{
    return this.RenderView("/Views/Shared/FormView.cshtml", model);
}

在这个为 MVC 5 构建的示例中,RenderView 是控制器的扩展方法:

public static class ControllerExtensions
{
    public static string RenderView(this System.Web.Mvc.Controller controller, string viewName, object model)
    {
        return RenderView(controller, viewName, new ViewDataDictionary(model));
    }

    public static string RenderView(this System.Web.Mvc.Controller controller, string viewName, ViewDataDictionary viewData)
    {
        var controllerContext = controller.ControllerContext;

        var viewResult = ViewEngines.Engines.FindView(controllerContext, viewName, null);

        StringWriter stringWriter;

        using (stringWriter = new StringWriter())
        {
            var viewContext = new ViewContext(
                controllerContext,
                viewResult.View,
                viewData,
                controllerContext.Controller.TempData,
                stringWriter);

            viewResult.View.Render(viewContext, stringWriter);
            viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View);
        }

        return stringWriter.ToString();
    }
}

【讨论】:

    【解决方案2】:

    Dotnet 核心支持

    var s = "some html / html form";
    
    HttpContext.Response.WriteAsync(s.ToString());
    

    查找参考: https://gist.github.com/priore/7163408

    Is there an equivalent to "HttpContext.Response.Write" in Asp.Net Core 2?

    【讨论】:

      猜你喜欢
      • 2010-11-19
      • 2014-03-02
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多