Как передать данные из представления на контроллер в MVC

0

Я разрабатываю приложение в 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> Пожалуйста, помогите мне.

  • 0
    Что вы имеете в виду под "следующим взглядом"? Это другая страница или какая-то область на той же странице?
  • 0
    Это еще одна страница с именем «SaveData».
Показать ещё 3 комментария
Теги:
asp.net-mvc
onclick
onblur

1 ответ

0

Вы можете сделать это двумя способами;

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, если значения формы действительны или нет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню