将值属性传递给控制器​​

时间:2018-04-25 07:37:24

标签: c# asp.net-mvc asp.net-mvc-4

我有一个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。有人可以建议什么是错误吗?

2 个答案:

答案 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())

})

可能不是最好的解决方案,但它会起作用