Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从HttpGet操作方法获取数据并将其传递给HttpPost方法_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 从HttpGet操作方法获取数据并将其传递给HttpPost方法

C# 从HttpGet操作方法获取数据并将其传递给HttpPost方法,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我只是问自己是否可以从HttpGet Actionmethod获取值并将其传递给HttpPost Actionmethod 代码如下: 联系人管理员控制器 SendMail.cshtml 我的问题是,我真的不知道如何将EditorFors和TextAreaFor的值传递给HttpPost SendMail方法。我没有在stackoverflow上找到任何合适的解决方案,也没有在asp.net主页上找到任何解决方案。我希望有人能帮我:) 提前感谢您没有创建要提交给控制器的表单,是吗?你可以在剃须刀

我只是问自己是否可以从HttpGet Actionmethod获取值并将其传递给HttpPost Actionmethod

代码如下:

联系人管理员控制器 SendMail.cshtml 我的问题是,我真的不知道如何将EditorFors和TextAreaFor的值传递给HttpPost SendMail方法。我没有在stackoverflow上找到任何合适的解决方案,也没有在asp.net主页上找到任何解决方案。我希望有人能帮我:)
提前感谢

您没有创建要提交给控制器的表单,是吗?你可以在剃须刀上这样做

@using (Html.BeginForm("SendMail", "ContactAdmin", FormMethod.Post))
{
   //Your form here with submit button
}
  • 此方法将开始标记写入响应。当用户提交表单时,将通过操作方法处理请求
  • 您可以在
    使用
    块中使用此方法。在这种情况下,该方法在using块的末尾呈现closing
    标记
  • 此方法有许多重载,但这允许定义
    FormMethod
    :处理表单的
    HTTP
    方法,可以是
    GET
    POST
因此,当您想
发布到控制器时,
SendMail.cshtml
将成为

@using (Html.BeginForm("SendMail", "ContactAdmin", FormMethod.Post))
    {
<div>
        <p>
            @Html.LabelFor(m => m.username, "username")
            @Html.EditorFor(m => m.username)
            @Html.ValidationMessageFor(m => m.username)
        </p>
        <p>
            @Html.LabelFor(m => m.email, "email")
            @Html.EditorFor(m => m.email)
            @Html.ValidationMessageFor(m => m.email)
        </p>
        <p>
            @Html.LabelFor(m => m.message, "Your message")
            <p>
                @Html.TextAreaFor(m => m.message, new { cols = "35", rows = "10", @style = "resize:none" })
                @Html.ValidationMessageFor(m => m.message)
            </p>
        </p>
        <p>
            <input type="submit" class="button" value="Send" />
        </p>
    </div>
}
@使用(Html.BeginForm(“SendMail”、“ContactAdmin”、FormMethod.Post))
{

@LabelFor(m=>m.username,“username”)
@EditorFor(m=>m.username)
@Html.ValidationMessageFor(m=>m.username)

@LabelFor(m=>m.email,“email”) @EditorFor(m=>m.email) @Html.ValidationMessageFor(m=>m.email)

@LabelFor(m=>m.message,“您的消息”) @text区域(m=>m.message,新的{cols=“35”,rows=“10”,“@style=“resize:none”}) @Html.ValidationMessageFor(m=>m.message)

}
使用您还需要提交输入。@Romoku这就是我的评论解释的,不是吗?是的,但是
会更完整。非常感谢@BhushanFirake!!这个很好用!但现在我有另一个问题。当我将所有编辑器和文本区域留空时,我仍然可以提交。如何添加一些验证以适合ViewModel?@Superbyte您需要使用jquery或javascript添加一些客户端验证,然后还可以使用一些js文件在ViewModel中使用
ErrorMessages
。谷歌它。。。
public class ContactAdminViewModel
    {
        [Required(ErrorMessage = "You need to fill in a username")]
        public string username { get; set; }
        [Required(ErrorMessage = "You need to fill in an email adress")]
        public string email { get; set; }
        [Required(ErrorMessage = "You need to fill a message for the admin")]
        public string message { get; set; }
    }
@using (Html.BeginForm("SendMail", "ContactAdmin", FormMethod.Post))
{
   //Your form here with submit button
}
@using (Html.BeginForm("SendMail", "ContactAdmin", FormMethod.Post))
    {
<div>
        <p>
            @Html.LabelFor(m => m.username, "username")
            @Html.EditorFor(m => m.username)
            @Html.ValidationMessageFor(m => m.username)
        </p>
        <p>
            @Html.LabelFor(m => m.email, "email")
            @Html.EditorFor(m => m.email)
            @Html.ValidationMessageFor(m => m.email)
        </p>
        <p>
            @Html.LabelFor(m => m.message, "Your message")
            <p>
                @Html.TextAreaFor(m => m.message, new { cols = "35", rows = "10", @style = "resize:none" })
                @Html.ValidationMessageFor(m => m.message)
            </p>
        </p>
        <p>
            <input type="submit" class="button" value="Send" />
        </p>
    </div>
}