Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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
Javascript MVC6使用ajax将模型从视图传递到控制器,再传递到局部视图_Javascript_C#_Jquery_Asp.net Mvc - Fatal编程技术网

Javascript MVC6使用ajax将模型从视图传递到控制器,再传递到局部视图

Javascript MVC6使用ajax将模型从视图传递到控制器,再传递到局部视图,javascript,c#,jquery,asp.net-mvc,Javascript,C#,Jquery,Asp.net Mvc,我试图做的是创建一个可以从所有不同视图使用的gui对象。其思想是通过将构件放置在占位符div中,将构件作为局部视图添加到主视图中 这是我的模型 public class Client { public int clientid { get; set; } public string clientname { get; set; } } 我用来插入组件的java脚本。。。 理想情况下,我更愿意只使用通过直接调用传递到此视图的模型数据,但这不

我试图做的是创建一个可以从所有不同视图使用的gui对象。其思想是通过将构件放置在占位符div中,将构件作为局部视图添加到主视图中

这是我的模型

    public class Client
    {
        public int clientid { get; set; }
        public string clientname { get; set; }
    }
我用来插入组件的java脚本。。。 理想情况下,我更愿意只使用通过直接调用传递到此视图的模型数据,但这不起作用,这就是为什么我一直在对下面的var模型进行故障排除

var model = {
    clientid: 23,
    clientname: "This one"
};
$.ajax({
    type: "POST",
    data: JSON.stringify(model),
    url: "../shared/ClientProgramSelector",
    contentType: "application/json"
}).done(function(result) {
    $("#clientProgramSelectorPlaceholder").html(result);
});
正在调用的控制器位于此处

[HttpPost]
public PartialViewResult ClientProgramSelector([FromBody] Client passingData )
{
    return PartialView("ClientProgramSelector", passingData);
}
最后,这里是我试图将组件放入的div

<div id="#clientProgramSelectorPlaceholder"></div>

代码没有显示错误,但页面上没有呈现任何内容。有人知道我做错了什么吗?另外,是否有一种方法可以只使用传递的模型,而不必重新创建数据


提前感谢

您的ajax成功处理程序正在尝试将结果设置为
$(“#clientProgramSelectorPlaceholder”)
返回的jQuery元素。这将返回Id值为“clientProgramSelectorPlaceholder”的元素。但是你的HTML,你没有!您拥有的是一个Id为“#clientProgramSelectorPlaceholder”的元素

div id应该没有
#
,只要ajax调用返回200ok响应,它就可以工作

<div id="clientProgramSelectorPlaceholder"></div>
如果希望将原始模型作为ajax post数据传递,可以在javascript代码块中使用
JsonConvert.SerializeObject
方法

var model = @Html.Raw(JsonConvert.SerializeObject(Model));
$.ajax({
    type: "POST",
    data: JSON.stringify(model),
    url: "@Url.Action("ClientProgramSelector","YourControllerNameHere")",
    contentType: "application/json"
}).done(function(result) {
    $("#clientProgramSelectorPlaceholder").html(result);
});

尝试将“done”替换为“success”,并在AJAX调用中添加一个“error”函数。AJAX调用成功吗?返回200行吗?或者404,如果是404,你应该修复你的URL。如果呼叫成功,我只是id错误。那是个愚蠢的错误。但是,我仍然想知道您是否可以在ajax调用中直接传递viewmodel,谢谢。不要更改您的问题并使答案无效(我已经回滚了您的更改)谢谢。是的,我在看代码的时候注意到了。现在,有没有一种方法可以将前一个控制器传递到视图中的原始模型传递到主视图中,在主视图中有div?希望通过ajax在视图中传递模型。我想还有一个问题。部分视图中的所有样式和javascript都不会传递到主视图。这正常吗?对不起,这个问题,这是火的时候,我已经能够让它半正常工作。我会玩它更多的明天,当我有机会的时候。非常感谢你的帮助。
var model = @Html.Raw(JsonConvert.SerializeObject(Model));
$.ajax({
    type: "POST",
    data: JSON.stringify(model),
    url: "@Url.Action("ClientProgramSelector","YourControllerNameHere")",
    contentType: "application/json"
}).done(function(result) {
    $("#clientProgramSelectorPlaceholder").html(result);
});