Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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# 尝试使用局部视图访问控制器时出现的问题_C#_Asp.net_Asp.net Mvc_Mongodb_Razor - Fatal编程技术网

C# 尝试使用局部视图访问控制器时出现的问题

C# 尝试使用局部视图访问控制器时出现的问题,c#,asp.net,asp.net-mvc,mongodb,razor,C#,Asp.net,Asp.net Mvc,Mongodb,Razor,因此,我有一个基于依赖于控制器的模型的视图 在该视图中,我有一个模态的局部视图,在该模态中,用户必须提供一些信息,然后提交。我将其称为\u ModalContent,它应该依赖于同一个控制器,但当我尝试在控制器内执行此操作时: [HttpPost] public ActionResult MyView(ParentModel model) { if (model != null) { UserInformationViewM

因此,我有一个基于依赖于控制器的模型的视图

在该视图中,我有一个模态的局部视图,在该模态中,用户必须提供一些信息,然后提交。我将其称为
\u ModalContent
,它应该依赖于同一个控制器,但当我尝试在控制器内执行此操作时:

    [HttpPost]
    public ActionResult MyView(ParentModel model)
    {
        if (model != null)
        {
        UserInformationViewModel info = model.UserInformationViewModel;
        var client = new MongoClient("mongodb://localhost:27017");
        var objDatabase = client.GetDatabase("Test");
        var collection = objDatabase.GetCollection<BsonDocument>("Users");
        BsonDocument objDocument = new BsonDocument {
            {"Nom",info.NomUser},
            {"Prenom",info.PrenomUser},
            {"Email",info.EmailUser},
            {"Telephone",info.TelephoneUser},
            };

        collection.InsertOne(objDocument);
        }
        return View("_ModalContent");
    }

您需要包装表单提交按钮,并添加适当的控制器名称和操作方法

@using (Html.BeginForm("MyView", "ControllerName", FormMethod.Post)
{
    <div style="margin-top:25px;">
       <input type="submit" disabled="true" class="btn btn-default" style="color:#ffffff;background-color:#48bcb4;border-color: #48bcb4;">
   </div>
}

如果您使用Ajax,请调用

$('#submitButton').click(function (e) {
    $.ajax({
        url: '/Controller/MyView',
        type: 'POST',
        data: data,      
        dataType: 'html',
        success: function (data) {

        }
    });
)};
应使用与模型相似的结构创建数据参数。 数据将被发送进来

 "JSON.stringify({your javascriptmodelobject})"

这种格式

如果您使用的是Ajax调用,那么当您执行POST模型时,您必须序列化该模型

首先,您必须将.cshtml代码包装在表单标记中,如

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post,new { @id="form1" })
{
   // your cshtml code here

}
在提交按钮上单击事件

$('#submit').click(function () {

    var model=$('#form1').serialize();
    $.ajax({
        url: '/Controller/ActionName',
        type: 'POST',
        data: model,  
        success: function (data) {

        }
    });
 });

注意:如果您使用的是按钮type=“submit”。请使用按钮类型=“按钮”。对于ajax Post请求。

在添加部分视图的位置显示razor代码。我已经添加了它,请告诉我您是否还需要其他内容。也可以从部分视图添加razor代码。完成了,还有其他内容吗?视图或部分视图中的表单提交按钮在哪里。我没有看到任何表单提交按钮。如果没有该控制器,firedNot将无法工作,我认为这是因为调用分部的视图已经包装在Html中。BeginInformy您需要为分部视图提交按钮再添加一个
@Html.BeginForm
。是的,我像您所说的那样添加了它,但什么也没有发生。在我看来,部分调用被包装在一个@Html.BeginForm中,我认为这会产生冲突不?真奇怪,我没有联系到控制器:/你能试着用ajax调用它吗。在我的回答中看到我的更新我想在没有ajax的情况下完成,但是我发现很奇怪,我没有到达控制器。可能是路由问题?添加一个Html.beginform,然后添加一个Html.beginform,因为它没有到达控制器。。。只有我给出了一个参数Model.UserInformationViewModel,这给了我一个错误我需要在脚本应答器中使用ajax吗?是的。。如果使用的是局部视图,则首先确保该表单的id不存在于该渲染视图中的任何位置。您可以尝试将此脚本代码放在该部分视图中。好的,但我得到了一个错误,例如a)意外,但您在哪里使用了“$(function(){}”);”此标记位于ajax调用之前(请使用}更新最后一行)});我已经更新了我的ajax代码,请参阅最后一行。
$('#submitButton').click(function (e) {
    $.ajax({
        url: '/Controller/MyView',
        type: 'POST',
        data: data,      
        dataType: 'html',
        success: function (data) {

        }
    });
)};
 "JSON.stringify({your javascriptmodelobject})"
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post,new { @id="form1" })
{
   // your cshtml code here

}
$('#submit').click(function () {

    var model=$('#form1').serialize();
    $.ajax({
        url: '/Controller/ActionName',
        type: 'POST',
        data: model,  
        success: function (data) {

        }
    });
 });