asp.net mvc jquery ajax传递多个模型对象时报错

stevenjin 2017-12-15 05:23:50
1.如何利用ajax向后台mvc中传递2个模型,前端写成这样报错了。不知如何构建ajax中的data部分呢?
$.ajax({
url: "/api/dd/" + actionName,
type: "Post",
data:{ { MessageUrl: "https://open-doc.dingtalk.com", PicUrl: '@lAjPBY0V4soLGfPOK4j7vs4jjlda', Title: '测试通过web api发送链接消息', Text: '链接消息测试文本'}, { Touser: 'manager4469' }},
success: function (data) {
alert(data);
}


2.后端想这样去接收:

public void SendLinkMsgUser(LinkMsgModel linkMsgModel,Link link)
{
var msgModel = new LinkMsgModel()
{
// Agentid = linkMsgModel.Agentid,
Link = new Link()
{
//MessageUrl = link.MessageUrl,
//PicUrl = link.PicUrl,
//Title = link.Title,
//Text = link.Text,
},
Agentid=linkMsgModel.Agentid,
Touser=linkMsgModel.Touser
// Touser = linkMsgModel.Touser
};
ddManager.SendMessage(msgModel);
}


3.两个实体类:
public class LinkMsgModel : MessageRequestBaseModel
{
public LinkMsgModel()
{
this.MessageType = MessageType.Link;
}
public Link Link { get; set; }
}
public class Link
{
public string MessageUrl { get; set; }
public string PicUrl { get; set; }
public string Title { get; set; }
public string Text { get; set; }
}

public class MessageRequestBaseModel
{
public string Touser { get; set; }//个人
public string Toparty { get; set; }//公司或部门
[Required]
public string Agentid { get; set; }//应用id
[JsonIgnore]
public MessageType MessageType { get; set; } = MessageType.Text;
public string Msgtype { get { return GetDispayName(MessageType); } }
public string GetDispayName(MessageType type)
{
return type.ToString().ToLower();
}
}
...全文
254 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
stevenjin 2017-12-16
  • 打赏
  • 举报
回复
我在后台是用dynamic接收的。
stevenjin 2017-12-16
  • 打赏
  • 举报
回复
搞定了,这样写 var LinkMsgModel = { MessageUrl: "https://open-doc.dingtalk.com", PicUrl: "@lAjPBY0V4soLGfPOK4j7vs4jjlda", Title: "测试通过web api发送链接消息", Text: "链接消息测试文本", }
Jason_Mao1 2017-12-16
  • 打赏
  • 举报
回复
你应该是写法有问题,给你个好方法。用JS 定义实体对象。然后将这个实体对象转换成json 传递 。希望能帮助到你。
stevenjin 2017-12-16
  • 打赏
  • 举报
回复
按你的写法,但报错了: Uncaught TypeError: {(intermediate value)(intermediate value)(intermediate value)(intermediate value)} is not a constructor
qq_31107977 2017-12-16
  • 打赏
  • 举报
回复
在前端用两个对象分开
 var  LinkMsgModel=new  { "MessageUrl": "https://open-doc.dingtalk.com", "PicUrl": '@lAjPBY0V4soLGfPOK4j7vs4jjlda', "Title": '测试通过web api发送链接消息', "Text": '链接消息测试文本'}
var link=new   { "Touser": 'manager4469' }
ajax传入
data:{linkMsgModel:LinkMsgModel,link:link}[code=csharp]
[/code]
stevenjin 2017-12-15
  • 打赏
  • 举报
回复
我这样写了,前端报错。无法将多个参数(“linkMsgModel”和“link”)绑定到请求的内容。 1.前端
  //发送链接消息
                            $.ajax({
                                url: "/api/dd/" + actionName,
                                type: "Post",
                                contentType: 'application/json',
                                data: JSON.stringify({
                                    linkMsgModel: {
                                        PicUrl: "'@lAjPBY0V4soLGfPOK4j7vs4jjlda'",
                                        Title: "66655tttt"
                                    },
                                    link: {
                                        Text: "111111",
                                        Touser: "2222222"
                                    }
                                }
                                ),
                            success: function (data) {
                                alert(data);
                            }
2.后台:
Route("SendLinkMsgUser")]
        [HttpPost]
        public void SendLinkMsgUser(object linkMsgModel,object link)
        {
            var msgModel = new LinkMsgModel()
            {             
               // Agentid = linkMsgModel.Agentid,
                Link = new Link()
                {
                    //MessageUrl = link.MessageUrl,                                
                    //PicUrl = link.PicUrl,
                    //Title = link.Title,
                    //Text = link.Text,                    
                },
                //Agentid=linkMsgModel.Agentid,
                //Touser=linkMsgModel.Touser
               // Touser = linkMsgModel.Touser
            };          
        }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧