Я разрабатываю приложение в MVC, в котором я хочу отправить данные из представления в контроллер и снова вернуться с контроллера на другой. Я использую код в представлении,
<input type="text" id="ProductCode_0" name="ProductCode" style="width:10%; margin-left:0px;" onblur="AddEle()" />
<input type="text" id='ProductName_0' name="ProductName" style="width:10%; margin-left:20px;"/>
<input class="btn btn-primary" type="submit" value="Create" id="create"/>
Я использую jQuery для получения ProductCode-
<script type="text/javascript">
function AddEle()
{
var firstProductId=$('#ProductCode_0').val();
getProductFirstDetails(firstProductId)
}
function getProductFirstDetails(firstProductId)
{
$.ajax({
url: "/Purchase/getProductDetails/",
data: { Id: firstProductId },
dataType: "json",
success: function (result)
{
$('#ProductName_0').val(result.Name);
}
});
}
</script>
и в controller-
[HttpPost]
public ActionResult Create(string ProductCode, string ProductName)
{
if (ProductCode != "")
{
Purchase oPurchase = new Purchase();
if (ProductName != "")
{
oPurchase.ProductName = ProductName;
}
else
{
oPurchase.ProductName = "";
}
}
return RedirectToAction("SaveData",oPurchase);
}
public ActionResult SaveData(Purchase oPurchase)
{
ViewBag.ProductCode = oPurchase.ProductName;
ViewBag.ProductName = oPurchase.ProductName;
return View();
}
public JsonResult getProductDetails(int Id)
{
var FinalProduct = getProductEdit(Id);
return Json(FinalProduct, JsonRequestBehavior.AllowGet);
}
public Purchase getProductEdit(int Id)
{
Product oProduct = new Product();
if (Id == 1)
{
oProduct.ProductCode = "234443";
oProduct.Id = 1;
oProduct.Name = "Product1";
else
{
return oProduct;
}
}
}
и в представлении SaveData-
<div class="span6" >
<div class="span4" style="margin-left:25px;">
<label >ProductName</label>
</div>
<div class="span6" >
@ViewBag.ProductName
</div>
</div>
<div class="span6" >
<div class="span4" style="margin-left:25px;">
<label >ProductCode</label>
</div>
<div class="span6" >
@ViewBag.ProductCode
</div>
</div>
Здесь я использую функцию onblur
для извлечения записи из контроллера по id="ProductCode_0"
. Теперь моя проблема в том, что я хочу отправить полученные данные контроллеру n, чтобы получить его обратно в представлении SaveData
Я хочу отправить результат в [HttpPost]
поэтому я использую name
в поле зрения. Но я хочу, чтобы пользователь не вводил данные в текст box-
<input type="text" id='ProductName_0' name="ProductName" style="width:10%; margin-left:20px;"/>
Как это сделать? Я хочу только получить данные от контроллера и отправить его обратно в следующий вид, т.е. SaveData
, без использования текстового поля для ProductName
Есть ли способ сделать это с помощью <div>
или <lable>
Пожалуйста, помогите мне.
Вы можете сделать это двумя способами;
1.way
Сделать второе текстовое поле скрытым;
<input type="text" id="ProductCode_0" name="ProductCode" style="width:10%; margin-left:0px;" onblur="AddEle()" />
<input type="hidden" id='ProductName_0' name="ProductName" style="width:10%; margin-left:20px;"/>
<input class="btn btn-primary" type="submit" value="Create" id="create"/>
2 пути
Сделать второй блок отключенным;
<input type="text" id="ProductCode_0" name="ProductCode" style="width:10%; margin-left:0px;" onblur="AddEle()" />
<input type="text" id='ProductName_0' name="ProductName" style="width:10%; margin-left:20px;" disabled="disabled"/>
<input class="btn btn-primary" type="submit" value="Create" id="create"/>
Однако учтите, что пользователь также может изменить это текстовое поле с консоли firebug. Вам нужно сделать некоторую проверку на стороне servier, если значения формы действительны или нет