迭代ViewBag字符串,然后用它们填充表单

时间:2016-04-20 00:34:33

标签: javascript html asp.net-mvc razor viewbag

所以我使用ASP.NET和MVC并尝试获取字符串列表并用它们填充表单。基本上,某人应该能够导入帐号,用它们填充表单,然后点击提交按钮。我已经获得了字符串,并使用ViewBag将它们转移过来(我已经尝试过使用ViewData和TempData),如下所示:

public ActionResult Index(){

    String Path = @“C:\Users\a584619\testdata.xlsx”;
    String SheetName = “Sheet1”;
    DataReader dr = new DataReader();
    List<String> data = dr.readExcelFile(SheetName,Path);

    ViewBag.ExcelSSNS = data;

    return View();

}

这是html代码。我试图迭代这些项目,并在Razor代码之间偷偷摸摸一些javascript以填充表单。

<script>
function getExcelSSNs(){
@foreach (string s in ViewBag.ExcelSSNs)
{
       <text>
document.getElementById(“ActInput”).value = @s + “\n"
       </text>
    }
}

我可以在Chrome调试器中看到它正在为List中的每个字符串创建document.getElementById等,然后设置它,但理想情况下我会在表单中看到一个填充的帐号列表供用户提交。实际的形式可能有问题,所以我也把它包括在内。

<div id = “input”>

<form>
    <input type = “text” id = “Actinput” class = “form-control” placeholder = “Paste/Import Here” required style = “ display : table; height : 45h; resize: none; border-radius: 0px; overflow-y: scroll”>
</form>
</input>

这里的任何指导都会非常感激。感谢大家。

1 个答案:

答案 0 :(得分:0)

你不清楚自己想做什么。表单有多个输入还是只有一个?如果它只是一个,就像你在这里粘贴的代码一样,请注意这一行

document.getElementById(“ActInput”).value = @s + “\n"

在@foreach中多次重复1)它没有在声明的末尾包含必要的半列,2)只是反复替换相同的输入值,我不会这样做。认为你需要的是什么。

另外,你的Html应该是:

<form>
    <input type="text" id="ActInput" class="form-control" placeholder="Paste/Import Here" style="display: table; height: 45px; resize: none; border-radius: 0px; overflow-y: scroll" required/>
</form>

您以错误的方式关闭了输入,并且ID为&#34; Actinput&#34;而不是&#34; ActInput&#34;