Создать динамический Html.ActionLink - PullRequest
0 голосов
/ 30 января 2011

Я хотел бы создать динамическую ссылку Html.Action после нажатия кнопки в представлении. В настоящее время я использую ajax для обновления тега

в форме со случайно сгенерированным именем продукта из БД. Мой код выглядит так:

<p>
   <%using (Ajax.BeginForm("RandomProductName", new AjaxOptions { UpdateTargetId = "result" }))
    { %>           
        <input type="submit" value="Generate Random Product"/>

 <% } %>
</p>
<p id="result"></p>

Метод «RandomProductName» в контроллере возвращает строковое значение типа продукта. Я хотел бы иметь возможность превратить это в динамическую ссылку Html.Action, аналогичную <% = Html.ActionLink ("Плоскогубцы", "Детали", новый {id = "2"})%>, чтобы отобразить подробный вид.

Любая помощь по этому вопросу будет принята с благодарностью, так как я только изучаю основы в эти выходные.

Обновлено: вот код моего текущего метода:

public PartialViewResult RandomProductLink()
    {
        int id = RandomProductID();
        Product product = GetProduct(id);

        return PartialView(Product.Name);
        //i think i need to return something like - <%= Html.ActionLink(Product.Name, "Details" new {id=Product.ID})%>
    }

1 Ответ

0 голосов
/ 30 января 2011

UPDATE Теперь, когда я вижу ваш код, он кажется довольно простым. Самый простой способ - изменить действие RandomProductName, чтобы оно возвращало PartialViewResult, который возвращал бы содержимое пользовательского элемента управления.

public PartialViewResult RandomProductName()
{
    ProductNameModel productName = GenerateRandomProductName();
    return PartialView(productName);
}

Ваша модель может выглядеть следующим образом

public class ProductNameModel
{
   public string Name { get; set; }
   public int Id { get; set; }
}

Ваш пользовательский элемент управления может выглядеть следующим образом

<%= Html.ActionLink(Model.Name, "Details", new { id = Model.Id }) %>
...