Javascript 将模型/对象放在Http Get URL上
我需要进行一个HTTPGET调用,我想知道是否可以使用一个模型作为参数,这样我就不必使用12个参数 JavascriptJavascript 将模型/对象放在Http Get URL上,javascript,asp.net-mvc,api,Javascript,Asp.net Mvc,Api,我需要进行一个HTTPGET调用,我想知道是否可以使用一个模型作为参数,这样我就不必使用12个参数 Javascript function doSomething(){ vm.model = createModel(); window.open('ExportFile/' + vm.model, '_blank',''); } function createModel() { return { name: vm.name, t
function doSomething(){
vm.model = createModel();
window.open('ExportFile/' + vm.model, '_blank','');
}
function createModel() {
return {
name: vm.name,
type: vm.type,
status: vm.status,
// etc...
};
}
控制器
public virtual ActionResult ExportFile(Filters filter)
{
// query database and return file
}
模型
public class Filters
{
public string Name {get; set;}
public string Type {get; set;}
public string Status {get; set;}
// etc...
}
不完全确定要实现什么,但是否尝试将对象转换为JSON字符串?例如:
function createModel() {
return JSON.stringify({
name: vm.name,
type: vm.type,
status: vm.status,
// etc...
});
}
您可以传递一个将存储序列化模型的参数。对象的序列化可以使用类似以下内容的
JSON.stringify
来完成-window.open('ExportFile/?model='+encodeURIComponent(JSON.stringify({filter:vm.model})),'u blank',''
@Vitaliy没有得到错误,但controllerIt的另一个问题中的模型为空。您已经询问了如何放置模型,现在您正在询问如何解析它。我不是C#专家,但我可以看到JS模型和服务器端模型有不同的属性(名称和名称、类型和类型)。问题可能就在这里。如果没有-请更新你的问题,不仅要问如何修改URL,还要问如何处理:)你应该以帖子的形式来做这件事。除了它创建的难看的查询字符串外,您可能会超过查询字符串限制并抛出和异常。当我这样做时,我会得到以下错误:“RoutedData必须包含一个名为“action”的项,该项具有非空字符串值”“您正在构建的模型对象中是否有一个名为“action”的项,并且该项是否非空?似乎您的后端需要您未发送的数据不,没有操作条目。现在,我使用的是与控制器post调用相同的模型。可能您的后端会根据post请求而不是GET自动确定操作。您可能需要在模型上手动设置它。您应该查看POST传递的内容,或者查看后端处理传入请求的代码