我有一个txt文件,我需要上传到网页并进一步处理。我的解决方案是在视图中有一个hidden
标记,并在控制器中获取它的值。我使用javascript
进行了上传,按预期工作,我在运行脚本后为标记赋值:
<input id="filecontents" name="configurationstring" type="hidden" value="{
"ID": 0,
"Updated": "\/Date(1524153092965)\/",
"Countries": [11, 12, 15, 16, 23, 33, 38, 42, 43, 48, 49, 52, 57, 59, 62, 63, 66, 68, 69, 70, 73, 79, 80, 86, 87, 88, 90, 95, 103, 104, 106, 107, 108, 109, 113, 115, 116]
}">
然后我和ActionLink
从控制器调用此方法:
public ActionResult getConfig(string configurationstring)
{
//perform computations
return View()
}
但是,不知何故,在控制器端,configurationstring
总是null
。有人可以建议什么是错误吗?
答案 0 :(得分:0)
HTML:
<form action="home/Index" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<input type="submit" />
</form>
C#:
public class ConfigFile
{
public DateTime Updated { get; set; }
public int ID { get; set; }
public List<int> Countries { get; set; }
}
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
if (file.ContentLength > 0)
{
string inputString = (new StreamReader(file.InputStream)).ReadToEnd();
JavaScriptSerializer jss = new JavaScriptSerializer();
var configFile = jss.Deserialize<ConfigFile>(inputString);
}
return View();
}
答案 1 :(得分:0)
如果jQuery是可行的,你可以这样做。
编写onclick函数并将stringyfied JSON作为查询参数发送
$("#actionLinkId").on("click",function(e){
e.preventDefault();
window.location.href=url+"?configurationstring="+JSON.stringify($("#filecontents").val())
})
可能不是最好的解决方案,但它会起作用