Este es mi código. Quiero crear dos cuadros de texto usando Razor en script.
el model=>model[i].Name1 no funciona
var counter = 0; @{ int i = 0; } $(document).ready(function () { $("#addButton").click(function () { if (counter < 0) { alert("Add more textbox"); return false; } i = counter; var newTextBoxDiv = $(document.createElement('div')) .attr("id", 'TextBoxDiv' + counter).attr("class", 'TextBoxDiv').attr("style", "border:5px solid green"); newTextBoxDiv.after().html('<label>Name #'+ counter + ': </label>' + '@Html.EditorFor(model => model[i].Name1);' + '<br/> <label>Email #'+ counter +': </label>' + '@Html.EditorFor(model => model[i].EmailID);' + '<br/><input type="button" name="button' + counter + '" class="removeButton" id="removeButton' + counter + '" value="Remove Button" onclick="remove(this)">'); newTextBoxDiv.appendTo("#TextBoxesGroup"); alert(i.toString()); counter++; i = i + 1; }); });No puede hacer que JS escriba Razor: el JS ocurre en el lado del cliente DESPUÉS de que la maquinilla de afeitar se haya ejecutado en el servidor y se haya enviado al cliente. el JS no sabrá qué hacer con la sintaxis de la maquinilla de afeitar.
En este caso, deberá crear manualmente el html que el asistente de Razor creará por usted. Todavía debería volver a analizarse en razor, siempre que coloque el html en el formato correcto (nombre correcto, identificación, etc.)
Así que escribe y haz que el campo de nombre coincida con lo que habría generado la navaja.
Puede intentar establecer una variable js con el valor del modelo y luego usar <input/> para reemplazar @Html.EditorFor() :
var counter = 0; var m = JSON.parse('@Json.Serialize(@Model)'); $(document).ready(function () { $("#addButton").click(function () { if (counter < 0) { alert("Add more textbox"); return false; } var newTextBoxDiv = $(document.createElement('div')) .attr("id", 'TextBoxDiv' + counter).attr("class", 'TextBoxDiv').attr("style", "border:5px solid green"); newTextBoxDiv.after().html('<label>Name #'+ counter + ': </label>' + '<input id="model_' + counter +'__Name1" name=" model[' + counter + '].Name1" value="' + m[counter].Name1 + '"/>' + '<br/> <label>Email #'+ counter +': </label>' + '<input id="model_' + counter +'EmailID" name=" model[' + counter + '].EmailID" value="' + m[counter].EmailID + '"/>' + '<br/><input type="button" name="button' + counter + '" class="removeButton" id="removeButton' + counter + '" value="Remove Button" onclick="remove(this)">'); newTextBoxDiv.appendTo("#TextBoxesGroup"); counter++; }); });