Передача значения атрибута в контроллер - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть текстовый файл, который мне нужно загрузить на веб-страницу и обработать дальше.Мое решение состояло в том, чтобы иметь тег 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 голосов
/ 02 мая 2018

если jQuery, если это возможно, вы можете сделать что-то вроде этого.

написать функцию onclick и отправить строковый JSON в качестве параметра запроса

$("#actionLinkId").on("click",function(e){

e.preventDefault();

window.location.href=url+"?configurationstring="+JSON.stringify($("#filecontents").val())

})

может быть не лучшим решением, но оно будет работать

0 голосов
/ 25 апреля 2018

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();
}
...