2012-02-23 2 views
0

Я хотел бы передать параметр из представления в контроллер на странице cshtml. Это код, у меня есть:передать параметр из вида в контроллер razor

<script type="text/javascript"> 
    function Test() { 

     $.get(  
     "@Url.Action("UpdateReport/", "Report")"     
    ); 
    } 

</script> 

<h2>Reports</h2> 

@foreach (var item in Model) 
{ 
    <div>@Html.ActionLink(@item.Name, "ActionCall", "Report", new { Id = @item.Id }, null)</div><br /><br /> 
       <input type="button" class="button1" value="Insert" /> 
       <input type="button" class="button1" value="Delete" /> 
       <input type="button" onclick="Test()" class="button1" value="Update" />  
} 

При нажатии на кнопку обновления, я хотел бы передать @ к item-id действия контроллера с помощью кода JS у меня есть. Теперь код переходит к действию контроллера, но без параметров. Я тоже хочу передать параметр. Заранее спасибо за любой совет, Лациал

public ActionResult UpdateReport(string name) 
     { 
      return View("Index"); 
     } 

ответ

0

вы можете использовать $ .post

<script type="text/javascript"> 
    function Test() { 

     var itemId = $('#MyButton').attr('itemid'); 
      var url = '@Url.Action("UpdateReport", "Outcome")'; 
      var data = { Id:itemId }; 
       $.post(url, data, function (result) { 
        var id = '#postedFor' + postId; 
        $(id).html(result); 

      });     
    ); 
    } 

</script> 

и связать идентификатор товара к введенному

<input id="MyButton" itemid="@Html.Raw("postedFor" + Model.Id)" type="button" onclick="Test()" class="button1" value="Update" /> 
+0

@Javanga на стороне контроллера Теперь, как получить правильный Id? Заранее спасибо. Пожалуйста, найдите контроллер в моем посте. – Laziale

+0

, если тип данных Id является строкой, тогда контроллер должен быть общедоступным. ActionResult UpdateReport (строка Id) { return View («Index»); } – Jayanga

+0

Вы заметили только тип данных, и имя свойства должно быть таким же, как данные, которые вы передаете из вида. – Jayanga

1
<script type="text/javascript"> 
    function Test() { 

     $.get(  
      "@Url.Action("UpdateReport/", "Report")", 
      {Id : @item.Id}     
     ); 
    } 
</script> 

или:

<script type="text/javascript"> 
    function Test() { 

     $.get(  
      "@Url.Action("UpdateReport/", "Report", new {Id = item.Id})" 
     ); 
    } 
</script> 
0

Добавить новый routevalue элемента, названного Id

<script type="text/javascript"> 
function Test() { 

    $.get(  
    "@Url.Action("Update", "Report", new { @id = item.Id })"     
); 
} 

0

Попробуйте этот код в вашем javascript functio п:

$.get('Report/UpdateReport?paramName=paramValue', function(data) { 
    //Do something with "data" 
}); 

Где ParamName это имя параметра в действии контроллера, значение тока значение, которое вы wanto пройти. Данные, возвращаемые контроллером, помещаются в переменные «данные».

1


Вид: В View "категории" параметра передается контроллеру с «admin» Значение

@{ Html.RenderAction("Menu", "Nav", new { category = "admin" }); } 


Контроллер: В "категории" значение параметра контроллера получается.

public PartialViewResult Menu(string category, string menu = null) 
{ 
    IEnumerable<Menu> menus = repository.Menus 
    .Select(x => x) 
    .Where(x => (x.MenuCategory == category) 
    .OrderBy(x => x.MenuSequence).ToList(); 
    return PartialView(menus); 
} 


Смежные вопросы